if(TARGET target-name): 判断这个 target 是否已经被add_executable(), add_library(), add_custom_target()这类命令创建,即使 target 不在当前目录下 if(DEFINED <name>|CACHE{<name>}|ENV{<name>}): 判断这个变量是否已定义 if(<variable|string> IN_LIST <variable>): 判断这个变量或字符串是否在列表...
if(TARGET <target-name>) 1. 如果给定名称是通过调用add_executable()、add_library()或add_custom_target()创建的现有逻辑目标名称,则为True。 测试 if(TEST test-name) 1. CMake3.3 新增,如果给定名称是通过调用add_test()创建的现有测试名称,则为True。 变量 if(DEFINED <name>|CACHE{<name>}|ENV{<n...
IF语句在CMake的历史上出现的相当早,它拥有一些需要特殊介绍的便捷特性。IF表达式只有在其中有一个单一的保留值的时候,才会精简操作(即不做变量展开——译注);这些保留值包括:如果是大小写无关的 ON,1, YES,TRUE,Y,它返回真;如果是OFF,0,NO,FALSE,N,NOTFOUND,*-NOTFOUND,IGNORE,它返回假。这种特性非常合理,...
IF (EXISTS dir) IF (EXISTS file) 如果目录或文件存在,为真 IF (file1 IS_NEWER_THAN file2),当file1比file2新,或file1/file2中有一个不存在时为真,文件名需使用全路径 IF (IS_DIRECTORY dir) 当dir是目录时,为真 IF (DEFINEDvar) 如果变量被定义,为真 IF (varMATCHES regex) 此处var可以用var名...
$<TARGET_EXISTS:target>:判断目标是否存在 $<CONFIG:cfgs>:判断编译类型配置是否包含在cfgs列表(比如"release,debug")中;不区分大小写 $<PLATFORM_ID:platform_ids>:判断CMake定义的平台ID是否包含在platform_ids列表中 $<COMPILE_LANGUAGE:languages>:判断编译语言是否包含在languages列表中 2 字符串值生成器表达式...
srvファイルを追加し、package.xmlとCMakeLists.txtを変更したところ、ビルド中に下のようなanother target with the same name already exists. というエラーが出ました。 エラーが出る前後の変更を調べると、CMakeLists.txtの find_packages() に message_generation を追
if(EXISTS${CMAKE_CURRENT_BINARY_DIR}/config.cmake)include(${CMAKE_CURRENT_BINARY_DIR}/config.cmake)else()if(EXISTS${CMAKE_CURRENT_SOURCE_DIR}/config.cmake)include(${CMAKE_CURRENT_SOURCE_DIR}/config.cmake)endif()endif() 参考链接
PROJECT_NAME:返回由PROJECT指令定义的项目名称; CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS:用来控制IF…ELSE…语句的书写方式; 2. 系统信息预定义变量 CMAKE_MAJOR_VERSION cmake主版本号,如2.8.6中的2 CMAKE_MINOR_VERSION cmake次版本号,如2.8.6中的8
EXIST:判断文件或者目录是否存在,存在时为真。需要提供全路径;如果文件或者目录是符号链接(例如软连接),则只有当链接的目标存在时返回真。格式为:if(EXISTS path-to-file-or-directory)。 COMMAND:如果给定的名称是命令、宏或者函数这类可被调用的对象,则返回真。格式为:if(COMMAND command-name)。
target_include_directories(my_lib PUBLIC ${PROJECT_SOURCE_DIR}/include) # PROJECT_SOURCE_DIR是CMake内置的变量,表示工程的根目录路径 1. 2. 3. 4. 5. 6. # 添加一个库 add_library(my_lib STATIC my_source.cpp) # 当前target需要包含的头文件目录 ...