CMAKE 选项 个人整理

原创 2015年11月18日 12:38:01


ADD_DEFINITIONS( -DMACRO1 –DMACRO2 … ):
添加-D预编译宏定义,可以一次添加多个。

ADD_DEPENDENCIES(target-name depend-target1
depend-target2 ...)
定义target依赖的其他target,确保在编译本target之前,其他的target已经被构
建。

ADD_EXECUTABLE( name [WIN32]
                    source1 source2 … ):
指定一个名为name的可执行程序工程,其源文件为source1,source2等,此外还可以追加一个枚举量WIN32,表示此程序为Win32程序,使用WinMain作为程序入口。

ADD_LIBRARY( name [STATIC|SHARED|MODULE]
                source1 source2 … ):
指定一个名为name的链接库工程,其源文件为source1,source2等,此外还可以指示该工程的生成结果为静态库(STATIC),动态库(SHARED)还是模块(MODULE)。

ADD_SUBDIRECTORY( dir ):
指示下一级CMake脚本所在位置位于dir子目录。

ADD_TEST与ENABLE_TESTING指令。
ENABLE_TESTING指令用来控制Makefile是否构建test目标,涉及工程所有目录。语
法很简单,没有任何参数,ENABLE_TESTING(),一般情况这个指令放在工程的主
CMakeLists.txt中.
ADD_TEST指令的语法是:
ADD_TEST(testname Exename arg1 arg2 ...)
testname是自定义的test名称,Exename可以是构建的目标文件也可以是外部脚本等
等。后面连接传递给可执行文件的参数。如果没有在同一个CMakeLists.txt中打开
ENABLE_TESTING()指令,任何ADD_TEST都是无效的。

比如我们前面的Helloworld例子,可以在工程主CMakeLists.txt中添加
ADD_TEST(mytest ${PROJECT_BINARY_DIR}/bin/main)
ENABLE_TESTING()
生成Makefile后,就可以运行make test来执行测试了。

CMAKE_MINIMUM_REQUIRED( VERSION major[.minor[.patch]] ):
指示当前脚本所需的CMake版本,不能低于版本号major.minor.patch。

CONFIGURE_FILE( infile outfile ):
将文件infile复制到outfile的位置,同时执行其中变量的自动配置和更替,即,将infile中所有形同“${VAR}”和“@VAR@”的变量替换为对应的内容,并拷贝到outfile中,而这个新生成的outfile文件也可以在之后的脚本代码中得以使用。

FIND_LIBRARY( ${var}
                NAMES name1 [name2 …]
                PATHS path1 [path2 …]
                PATH_SUFFIXES suffix1 [suffix2 …] ):
搜索一个外部的链接库文件,并将结果的全路径保存到var变量中。要搜索的链接库文件名字可能是name1,name2等;搜索路径为 path1,path2等;此外还可以指定路径的后缀词为suffix1,suffix2等。因此,系统将尝试在path1/suffix1,path1 /suffix2,path2/suffix1,path2/suffix2这些目录中搜索名为name1或name2的链接库文件,并将结果(路径和文件名)保存到var中。

FIND_PACKAGE( name ):
在指定的模块目录中搜索一个名为Find<name>.cmake(例如,FindOSG.cmake)的CMake脚本模块文件,执行其中的内容,以图搜索到指定的外部依赖库头文件和库文件位置。

FIND_PATH( ${var}
            NAMES name1 [name2 …]
            PATHS path1 [path2 …]
            PATH_SUFFIXES suffix1 [suffix2 …] ):
搜索一个包含name1,name2等文件的目录,并将此路径(不包含文件名)保存到var变量中,搜索路径为path1,path2等;此外还可以指定路径的后缀词为suffix1,suffix2等。通常可以使用此命令来确认外部头文件的依赖路径。

FIND_PROGRAM( ${var}
                 NAMES name1 [name2 …]
                 PATHS path1 [path2 …]
                 PATH_SUFFIXES suffix1 [suffix2 …] ):
搜索一个外部的可执行程序,并将结果的全路径保存到var变量中。要搜索的程序名字可能是name1,name2等;搜索路径为path1,path2 等;此外还可以指定路径的后缀词为suffix1,suffix2等。

INCLUDE( file ):
在当前文件中包含另一个CMake脚本文件的内容。

INCLUDE_DIRECTORIES( dir1 dir2 … ):
指定编译器搜索头文件的依赖路径,可以添加多个。

INSTALL( TARGETS proj1 proj2
         RUNTIME DESTINATION runtime_dir
         LIBRARY DESTINATION library_dir
         ARCHIVE DESTINATION archive_dir):
这只是此命令的一种语法格式,安装目标工程proj1,proj2等到指定的文件夹。其中,可执行文件安装到RUNTIME DESTINATION指定的runtime_dir目录;动态链接库安装到LIBRARY DESTINATION指定的library_dir目录;静态链接库安装到ARCHIVE DESTINATION指定的archive_dir目录。如果需要安装头文件或者数据文件,则通常使用INSTALL( FILES … DESTINATION … )的形式。

LINK_DIRECTORIES( dir1 dir2 … ):
设置外部依赖库的搜索路径。

MESSAGE( [SEND_ERROR|STATUS|FATAL_ERROR] “text” … ):
在控制台或者对话框输出一行或多行调试信息文本text,枚举量用于控制信息的类型(错误,状态显示,致命错误)。

OPTION( ${var} “text” value ):
向用户提供一个可选项,提示信息为text,初始值为value,并将最终的结果传递到var变量中。在CMake-GUI中它将以配置选项的方式出现。

PROJECT( name ):
设置整个工程的名称为name。

SET( variable value
     [CACHE FILEPATH|PATH|STRING|BOOL “text”] ):
定义一个用户自定义变量variable,取值为value。此外还可以使用CACHE关键字,允许用户在CMake-GUI中修改变量的值,修改方式包括文件对话框(FILEPATH),目录对话框(PATH),编辑框(STRING)或者复选框(BOOL),并使用text作为提示信息。

SET_TARGET_PROPERTIES( name PROPERTIES prop value ):
设置名为name的工程的属性,这里主要可选的prop属性包括PROJECT_LABEL, DEBUG_POSTFIX,OUTPUT_NAME等等,value为设置值。

TARGET_LINK_LIBRARIES( name
                           lib1 lib2 …
                           [debug|optimized] lib1 lib2 … ):
指定工程name所用的依赖库,并可以使用debug和optimized关键字分别指定DEBUG与RELEASE版本所用的一个或多个依赖库。


#  CMAKE_MINIMUM_REQUIRED: 为工程设置最低的Cmake版本需求。

  CMAKE_MINIMUM_REQUIRED(VERSION versionNumber [FATAL_ERROR])

让cmake知道当前工程需要某个特定版本或者更高版本的cmakeLet。如果正在运行一个新版本的cmake, CMake 将会试图向下兼容cmake指定的版本。如果指定了 FATAL_ERROR ,则在碰到不满足这一需求时将认为是一个错误而不是一个警告。
# CONFIGURE_FILE: 拷贝一个文件到另一位置并修改它的内容。

  CONFIGURE_FILE(InputFile OutputFile
                 [COPYONLY] [ESCAPE_QUOTES] [@ONLY])

输入和输出文件必须是绝对路径。这个命令将会把输入文件中所有的${VAR} 或 @VAR@替换为CMake检测到的对应的变量的值。如果变量没有定义,它将被替换为空字符。 如果指定了 COPYONLY 变量,那么不会发生任何替换。如果指定了 ESCAPE_QUOTES,则任何引号必须是C-style逃易的。文件会被CMake根据变量的当前值进行配置。如果指定了 @ONLY,那么只会替换@VAR@形式的变量, ${VAR}形式的会被忽略。这对使用${VAR}的配置脚本很有用。任何 #cmakedefine VAR w会被替换成 #define VAR 或 /* #undef VAR */ , 替换将根据CMake中 VAR 的值决定。


包括前文介绍的PROJECT_SOURCE_DIR在内,以下内置全局变量都可以在CMake脚本中以“${…}”的形式直接加以应用,以方便脚本代码的定位和功能实现:


    * CMAKE_BUILD_TYPE:工程的编译生成的版本类型,可选项包括Debug,Release,RelWithDebInfo和 MinSizeRel。
    * CMAKE_COMMAND:也就是CMake可执行文件本身的全路径,例如/usr/local/bin/cmake或者 C:\Program Files\CMake 2.6\bin\cmake.exe。
    * CMAKE_DEBUG_POSTFIX:Debug版本生成目标的后缀,通常可以设置为“d”字符,例如Debug版本的OSG核心库为osgd.dll,而Release版为osg.dll。
    * CMAKE_GENERATOR:编译器名称,例如“Unix Makefiles”,“Visual Studio 7”等。
    * CMAKE_INSTALL_PREFIX:工程安装目录,所有生成和调用所需的可执行程序,库文件,头文件都会安装到该路径下,Unix/Linux下默认为/usr/local,Windows下默认为C:\Program Files。
    * CMAKE_MODULE_PATH:设置搜索CMakeModules模块(.cmake)的额外路径。
    * PROJECT_BINARY_DIR:工程生成工作所在的目录,即前文所述的“out-of-source”的目录;对于“in- source”形式的编译工作,该变量与PROJECT_SOURCE_DIR所指向的目录相同。
    * PROJECT_NAME:工程名称,即使用PROJECT命令设置的名称。
    * PROJECT_SOURCE_DIR:工程源代码文件所在的目录。
    * CYGWIN:标识当前系统是否为Cygwin。
    * MSVC:标识当前系统是否使用Microsoft Visual C。
    * UNIX:标识当前系统是否为Unix系列(包括Linux,Cygwin和Apple)。
    * WIN32:标识当前系统是否为Windows及Win64。


版权声明:本文为博主原创文章,转载请注明出处,有疑问请发邮件到zhangrui@fslib.org

相关文章推荐

CMake 默认编译、链接选项

CMakeLists.txt 文件内容:cmake_minimum_required(VERSION 3.4)message(STATUS "CMAKE_C_FLAGS = " ${CMAKE_C_F...
  • icbm
  • icbm
  • 2016-08-27 18:58
  • 2843

cmake:设置编译选项的讲究(add_compile_options和CMAKE_CXX_FLAGS的区别)

在cmake脚本中,设置编译选项可以通过add_compile_options命令,也可以通过set命令修改CMAKE_CXX_FLAGS或CMAKE_C_FLAGS。 使用这两种方式在有的情况下效...
  • 10km
  • 10km
  • 2016-06-22 09:53
  • 12671

cmake 常用变量和常用环境变量查表手册---整理 .

【转载自】http://blog.csdn.net/gubenpeiyuan/article/details/8667279 cmake 常用变量和常用环境变量查表手册---整理 . ...

cmake使用整理

1.cmake使用的文件是CMakeLists.txt 2.cmake中的指令是不区分大小写的,但里面的变量名,参数名,文件名是区分大小写的,建议指令全部用大写,参数之间用空格或者分号分开 3.c...

CMake 学习笔记整理(1)

最近在学cmark, 把笔记分享给大家, 换了个编辑器######################t1# project 名为 HELLO # 源代码为 main.cpp # 状态消息 This is...

Cmake使用示例与整理

转自:点击打开链接 cmake中一些预定义变量 PROJECT_SOURCE_DIR 工程的根目录PROJECT_BINARY_DIR 运行cmake命令的目录,通常是${PROJECT_...

Linux——cmake使用示例与整理总结

转自:http://blog.csdn.net/wzzfeitian/article/details/40963457/cmake中一些预定义变量PROJECT_SOURCE_DIR 工程的根目录PR...

cmake使用示例与整理总结

 本文代码托管于github  cmake_demo cmake中一些预定义变量 PROJECT_SOURCE_DIR 工程的根目录PROJECT_BINARY_DIR 运行cm...

【整理】LINUX下使用CMAKE安装MYSQL

【整理】LINUX下使用CMAKE安装MYSQL 原文地址:http://www.cppblog.com/issay789/archive/2013/01/05/196967.html 一、安装 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)