首页 > 代码库 > cmake语法学习

cmake语法学习

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 文件中,命令名字是不区分大小写的,而参数和变量是大小写相关的。