cmake_minimum_required( VERSION 2.8 )#cmake版本最低要求
project(KMeans)#项目名称
IF(NOT CMAKE_BUILD_TYPE)#(可选)如果没有指定cmake编译模式,就选择Release模式,必须写成三行
SET(CMAKE_BUILD_TYPE Release)
ENDIF()
set( CMAKE_CXX_FLAGS "-std=c++11" )# 添加c++ 11标准支持
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib)##设置生成的so动态库最后输出的路径
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR})#将产生的target文件输出到指定路径
add_library(${PROJECT_NAME} SHARED k-means.cpp)##将指定的源文件生成链接文件,然后添加到工程中去
include_directories(${PROJECT_SOURCE_DIR} )#添加头文件目录,相当于指定gcc的-I参数
link_directories($(DIR)/lib) #动态链接库或静态链接库的搜索路径,相当于gcc的-L参数
add_executable(main main.cpp)#生成可执行文件
target_link_libraries(main ${PROJECT_NAME})#将目标文件与库文件进行链接,添加链接库,相同于指定-l参数
如果添加OpenCV,OpenNI,PCL等库刚需要添加以下
set(OpenCV_DIR "/home/xx/release")#指定使用哪种版本的OpenCV,必须在project前,release是openCV编译的文件夹
LIST(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake_modules)#自己的cmake模块所在的路径,或者include( cmake 模块的绝对路径+名称)
find_package(<name1>)#find_package(<Name>)命令首先会在模块路径中寻找 Find<name>.cmake
find_package (<name2>)
...
include_directories(<name_INCLUDE_DIRS>)##添加相关库的头文件路径
target_link_libraries(${PROJECT_NAME} $(name1_LIBS) ...) #将目标文件与库文件进行链接
OK,这样一个完整的CMakeLists.txt就完成了,可以开始自己的编译了