1.项目最外层cmake编写:----------用于kdevelop编译器
×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
eg:
project(filtering)
cmake_minimum_required(VERSION 2.8) ————必须有的
include_directories(${PROJECT_SOURCE_DIR}/src) ————设置include头文件查找路径
link_directories (${PROJECT_BINARY_DIR}/lib) ————设置库文件搜索路径
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
add_subdirectory(src)
add_subdirectory(lib)
××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
第一行 project 不是强制性的,但最好始终都加上。这一行会引入两个变量
- FILTERING_BINARY_DIR 和 FILTERING_SOURCE_DIR
同时,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
set 命令用来设置变量,eg:set(TESTNAD_SRCS main.cpp) ,前一个为变量名称,后一个为其关联的文件,多个文件用空格分开。
add_exectuable 告诉工程生成一个可执行文件。eg:add_executable(testnad ${TESTNAD_SRCS}) ,前一个为可执行文件名称,后一个为变量值。
add_library 则告诉生成一个库文件。
aux_source_directory(<dir> <variable>):搜集所有在指定路径下的源文件的文件名,将输出结果列表储存在指定的<variable>变量中,非常好用。即指定该文件夹下所有文件都在变量中。
- 注意:CMakeList.txt 文件中,命令名字是不区分大小写的,而参数和变量是大小写相关的。
cmake语法学习