cmakelists 语法学习
1.项目最外层cmake编写:----------用于kdevelop编译器
1 project(filtering)
2
3 cmake_minimum_required(VERSION 2.8) ————必须有的
4
5 include_directories(${PROJECT_SOURCE_DIR}/src) ————设置include头文件查找路径
6 link_directories (${PROJECT_BINARY_DIR}/lib) ————设置库文件搜索路径
7
8 set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
9
10 add_subdirectory(src)
11 add_subdirectory(lib)
第一行 project 不是强制性的,但最好始终都加上。
同时,cmake自动定义了两个等价的变量
-
PROJECT_BINARY_DIR 和 PROJECT_SOURCE_DIR
因为是out-of-source方式构建,所以我们要时刻区分这两个变量对应的目录。
一般解释:
${PROJECT_SOURCE_DIR}:表示当前目录下
${PROJECT_BINARY_DIR}:工程当前编译目录(在新建工程的时候设置的,一般为build下)
可以通过message来输出变量的值:
message(STATUS ${PROJECT_SOURCE_DIR})
测试结果:PROJECT_SOURCE_DIR-- /home/zzy/profin/filtering
PROJECT_BINARY_DIR --- /home/zzy/profin/filtering/build
2.cmkae命令介绍
set 命令用来设置变量:(变量都是关联着相应程序文件的如.c .cpp)
set(TESTNAD_SRCS main.cpp) ,前一个为变量名称,后一个为其关联的文件,多个文件用空格分开。
add_exectuable 告诉工程生成一个可执行文件:
add_executable(testnad ${TESTNAD_SRCS}) ,前一个为可执行文件名称,后一个为变量值。
add_library 则告诉生成一个库文件:
add_library(nad ${NAD_SRCS}),前者为当前所在文件夹名称,后者为变量名称。
aux_source_directory(<dir> <variable>):
搜集所有在指定路径下的源文件的文件名,将输出结果列表储存在指定的<variable>变量中,非常好用。即指定该文件夹下所有文件都在变量中。
注意:CMakeList.txt 文件中,命令名字是不区分大小写的,而参数和变量是大小写相关的。
3.使用openmp:
1 option(ENABLE_OMP "Enables OpenMP, and has additional dependencies" ON) ----可放在最外层cmakelists中
2 if(ENABLE_OMP)
3 find_package(OpenMP REQUIRED)
4 set(CMAKE_C_FLAGS "${OpenMP_C_FLAGS} ${CMAKE_C_FLAGS}")
5 set(CMAKE_CXX_FLAGS "${OpenMP_CXX_FLAGS} ${CMAKE_C_FLAGS}")
6 endif(ENABLE_OMP)
如此,在程序中加入openmp编程语言既可使用。