因为在CMakeLists.txt里直接改option是错的,官方解法是通过-D参数来改。 刚刚说了,option等价于set(... CACHE BOOL ...)。因此在CMakeLists.txt里改同样不会立即更新缓存里的值。官方推荐做法是通过-D变量名:BOOL=ON/OFF来改缓存变量。 这是cmake官方认为正确的缓存更新方式,但是很多人不知道,还是傻傻的去...
set(stringListthisisstringlist)foreach(str${stringList})message("str is ${str}")endforeach() CMake 还提供了一个option指令。 可以通过它来给 CMake 定义一些全局选项: option(ENABLE_SHARED"Build shared libraries"TRUE)if(ENABLE_SHARED)#dosomethingelse()#dosomethingendif() 可能会觉得option无非...
CMake 在构建过程中,避免不了要读写一些配置文件,这个时候 file() 命令就显得很有必要了。 操作字符串 string() 也可以对 string 文本进行操作 代码语言:javascript 复制 Search and Replacestring(FIND<string><substring><out-var>[...])string(REPLACE<match-string><replace-string><out-var><input>...)...
复制 set(MyString1"Text1")set([[My String2]]"Text2")set("My String 3""Text3")message(${MyString1})message(${My\ String2})message(${My\ String\3})unset(MyString1) 由上面示例可以看到,对已定义变量的引用需要使用${} 语法,e.g. message(${MyString1}),其中message是用以构建过程中的...
CMake中,变量的值要么是String要么是String组成的List。 CMake没有用=赋值的操作,只有通过set,option来定义变量。 option只能定义OFF,ON的变量。 变量定义 set set分为两种 set普通变量 set(<variable><value>... [PARENT_SCOPE]) 例如 //VA=a;b, VA是一个字符串listset(VA a b)//VA=a,VA是一个字符...
#cmakedefine FOO_STRING "@FOO_STRING@" 1. 2. CMakeLists.txt中添加代码来设置一个开关,下边会执行if中的语句: option(FOO_ENABLE "Enable Foo" ON) if(FOO_ENABLE) set(FOO_STRING "foo") endif() configure_file(foo.h.in foo.h @ONLY) ...
get_filename_component(PARENT_DIR ${CMAKE_CURRENT_SOURCE_DIR} DIRECTORY) string(REGEX REPLACE ".*/(.*)" "\\1" NAME ${PARENT_DIR}) #获取本级目录名 string(REGEX REPLACE ".*/(.*)" "\\1" NAME ${CMAKE_CURRENT_SOURCE_DIR}) 1. 2. 3. 4. 5. 6....
option (CMAKE_BUILD_TYPE "Use tutorial provided math implementation"ON) 表示启用CMAKE_BUILD_TYPE 宏。 option (CMAKE_BUILD_TYPE "Use tutorial provided math implementation"OFF) #表示关 参考: 《c++ - Optimize in CMake by default 》:https://stackoverflow.com/questions/41361631/optimize-in-cmake...
if(<variable|string> PATH_EQUAL <variable|string>) CMake 版本要求:大于等于3.24 如果这个元素在列表中返回True,否则返回False。 关于路径的比较其实就是另个字符串的比较,如果路径格式书写没有问题也可以通过下面这种方式进行比较[STREQUAL]: if(<variable|string>STREQUAL<variable|string>) ...