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...
$<TARGET_NAME_IF_EXISTS:OpenMP::OpenMP_CXX> ) target_include_directories(sirius PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src> $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/src> $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/src/mod_files>) target_compile_definitions(sirius PUBLIC target_include_dir...
if(EXISTS "${CMAKE_SOURCE_DIR}/somefile.txt") message(STATUS "The file somefile.txt exists.") endif() IS_DIRECTORY: IS_DIRECTORY 用于检查给定的路径是否是一个目录。如果路径是一个存在的目录,返回布尔值。 if(IS_DIRECTORY "${CMAKE_SOURCE_DIR}/somedir") message(STATUS "The path somedir i...
else(): 如果前面的if和elseif条件都不成立,执行其内部的语句 endif(): 结束一个条件语句块 条件语句的常用条件判断 EXISTS : 文件是否存在 DEFINED : 变量是否定义 STREQUAL : 字符串比较,是否相等 LESS : 数字比较,小于 GREATER : 数字比较,大于 - EQUAL : 数字比较,相等 ...
add_executable(MyExecutable main.cpp)target_link_libraries(MyExecutable ../lib/mylib) 如果不设置 CMP0003 策略,CMake 可能会将 ../lib/mylib 作为相对路径传递给链接器。在一些情况下,这可能会导致链接失败或者运行时找不到库的问题。而通过设置cmake_policy(SET CMP0003 NEW),CMake 会将../lib/mylib...
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() 参考链接
if(NOTCMAKE_BUILD_TYPE)set(CMAKE_BUILD_TYPEReleaseCACHESTRING"Build type"FORCE)endif() 我们还使用便携式安装目录变量,如 GNU 软件所定义: 代码语言:javascript 复制 include(GNUInstallDirs)set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR})set(CMAKE_LIBRARY_OUTPUT_DIRECT...
2、ADD_DEPENDICIES(target_name, depend_name):定义target对其他target的依赖关系 3、AUX_SOURCE_DIRECTORY(dir VARIBLE):把目录下的所有源文件保存在变量中,基本用来创建源文件列表 4、ADD_EXECUTABLE:指定目录,生成执行文件 5、EXEC_PROGRAM:外部调用指令,可移执行任何外部命令,后面加参数,例子如下: ...
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需要包含的头文件目录 ...