Cmake笔记[原创]

查看awesome的cmake中记录,好久没用cmake了,看到陌生的地方最好记记 :)

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参数

你可能感兴趣的:(#Cmake)