1、实例
cmake_minimum_required (VERSION 2.6) INCLUDE_DIRECTORIES(../../thirdparty/comm) FIND_LIBRARY(COMM_LIB comm ../../thirdparty/comm/lib NO_DEFAULT_PATH) FIND_LIBRARY(RUNTIME_LIB rt /usr/lib /usr/local/lib NO_DEFAULT_PATH) link_libraries(${COMM_LIB} ${RUNTIME_LIB}) ADD_DEFINITIONS( -O3 -g -W -Wall -Wunused-variable -Wunused-parameter -Wunused-function -Wunused -Wno-deprecated -Woverloaded-virtual -Wwrite-strings -D__WUR= -D_REENTRANT -D_FILE_OFFSET_BITS=64 -DTIXML_USE_STL ) add_library(lib_demo cmd.cpp global.cpp md5.cpp ) link_libraries(lib_demo) add_executable(demo main.cpp ) # link library in static mode target_link_libraries(demo libuuid.a)
2、message的语法
MESSAGE([SEND_ERROR|STATUS|FATAL_ERROR] "message to display" ...) 这个指令用于向终端输出用户定义的信息,包含了三种类型: SEND_ERROR,产生错误,生成过程被跳过。 SATUS,输出前缀为—的信息。 FATAL_ERROR,立即终止所有 cmake 过程 在本例我们使用了${}来引用变量,这是 cmake 的变量应用方式,但是,有一些例外,比如在 IF 控 制语句,变量是直接使用变量名引用,而不需要${}。如果使用了${}去应用变量,其实 IF 会去判断名为 ${}所代表的值的变量,那当然是不存在的了。 message(status "this is binary dir" ${project_BINARY_DIR}) message(status "shit is source dir "${project_SOURCE_DIR})
3、基本语法规则
前面提到过,cmake 其实仍然要使用”cmake 语言和语法”去构建,上面的内容就是所谓的 ”cmake 语言和语法”,最简单的语法规则是: 1,变量使用${}方式取值,但是在 IF 控制语句中是直接使用变量名 2,指令(参数 1 参数 2...) 参数使用括弧括起,参数之间使用空格或分号分开。 以上面的 ADD_EXECUTABLE 指令为例,如果存在另外一个 func.c 源文件,就要写成: ADD_EXECUTABLE(hello main.c func.c)或者 ADD_EXECUTABLE(hello main.c;func.c) 3,指令是大小写无关的,参数和变量是大小写相关的。但,推荐你全部使用大写指令。 上面的 MESSAGE 指令我们已经用到了这条规则: MESSAGE(STATUS “This is BINARY dir” ${HELLO_BINARY_DIR}) 也可以写成: MESSAGE(STATUS “This is BINARY dir ${HELLO_BINARY_DIR}”) 这里需要特别解释的是作为工程名的 HELLO 和生成的可执行文件 hello 是没有任何关系的。 hello 定义了可执行文件的文件名,你完全可以写成: ADD_EXECUTABLE(t1 main.c) 编译后会生成一个 t1 可执行文件