option(WITH_DBUS "build with D-BUS" ON) 类似configure --with-dbus --without-dbus
link_directories(/usr/local/lib) 添加 link目录
add_definitions( -std=gnu99 -ggdb3 ...) c/c++的宏定义 CFLAGS
if (DEFINED PREFIX)
else (xxx)
endif(xxx)
if (EXISTS ${SOURCE_DIR}/.git/HEAD AND GIT_EXECUTABLE)
用 CMAKE_CXX_FLAGS 代替CXX_FLAGS正好google找到下面的
http://hz318.blog.163.com/blog/static/89939720078345756794/
#设置工程名
PROJECT(TEST)
#获取源码文件列表
AUX_SOURCE_DIRECTORY(. util_srcs)
#编译静态库
ADD_LIBRARY(util STATIC ${util_srcs})
然后在src目录下建立CMakeLists.txt,内容如下:
#工程名
PROJECT(TEST)
#子目录,设置编译库目录
ADD_SUBDIRECTORY(util lib)
#设置库目录
LINK_DIRECTORIES(lib)
#设置源代码文件
SET(TEST_SRCS main.c test.c)
#链接内部库
LINK_LIBRARIES(test util)
#编译可执行文件
ADD_EXECUTABLE(test ${TEST_SRCS})
#链接外部库,假设为mysql库
TARGET_LINK_LIBRARIES(test mysql)
http://blog.csdn.net/keensword007/archive/2008/07/16/2663235.aspx
常用的几个内置变量
从上文中我们知道,通过set语句可以自定义变量,然而,CMake还包含大量的内置变量,这些变量和自定义变量的用法没有区别,下面就列出一些常用的变量:
- CMAKE_C_COMPILER
指定C编译器,通常,CMake运行时能够自动检测C语言编译器。进行嵌入式系统开发时,通常需要设置此变量,指定交叉编译器。
- CMAKE_CXX_COMPILER
指定C++编译器
- CMAKE_C_FLAGS
指定编译C文件时编译选项,比如-g指定产生调试信息。也可以通过add_definitions命令添加编译选项。
- EXECUTABLE_OUTPUT_PATH
指定可执行文件存放的路径。
- LIBRARY_OUTPUT_PATH
指定库文件放置的路径
除了内置变量,我们还可以通过命令来修改编译选项,现将一些常用的命令列出来:
- include_directories
指定头文件的搜索路径,相当于指定gcc编译器的-I参数
- link_directories
动态链接库或静态链接库的搜索路径,相当于指>定gcc的-L参数
- add_subdirectory
包含子目录,当工程包含多个子目录时,此命令有用
- add_definitions
添加编译参数,比如add_definitions(-DDEBUG)将在gcc命令行添加DEBUG宏定义
- add_executable
编译可执行程序
- target_link_libraries
指定链接库,相同于指定-l参数