通过上述的方法,我们可以解决 CMAKE_CURRENT_SOURCE_DIR 变量无法正确解析的问题。使用 CMAKE_CURRENT_LIST_DIR 变量来代替 CMAKE_CURRENT_SOURCE_DIR 变量,能够确保无论在多级子目录中的哪个位置,都能正确获取到当前源代码目录的路径,更加方便使用CMake构建项目。 假设...
CMAKE_CURRENT_SOURCE_DIR:当前处理的 CMakeLists.txt 所在的源码目录的路径。 CMAKE_CURRENT_BINARY_DIR:当前处理的 CMakeLists.txt 所在的构建目录的路径。 CMAKE_CURRENT_LIST_DIR:当前处理的 CMakeLists.txt 所在的路径(源码目录或构建目录)。 CMAKE_CURRENT_LIST_LINE:当前正在处理的 CMakeLists.txt 的行...
【摘要】 解决CMAKE_CURRENT_SOURCE_DIR在使用CMake构建项目时,经常会用到 CMAKE_CURRENT_SOURCE_DIR 这个变量,用于获取当前源代码目录的路径。然而,有时候在项目中存在多级子目录的情况下,CMAKE_CURRENT_SOURCE_DIR 变量可能无法正确解析。 本文将介绍一种解决 CMAKE_CURRENT...
这两种用法生成的输出几乎相同,因为CMake会跟踪当前目录并替换出现的“。使用"${CMAKE_CURRENT_SOURCE_...
CMAKE_CURRENT_SOURCE_DIR:当前处理的 CMakeLists.txt 所在的路径 CMAKE_CURRENT_BINARY_DIR:target 编译目录 CMAKE_CURRENT_LIST_DIR:CMakeLists.txt 的完整路径 EXECUTABLE_OUTPUT_PATH:重新定义目标二进制可执行文件的存放位置 LIBRARY_OUTPUT_PATH:重新定义目标链接库文件的存放位置 ...
如果是 in-source 编译,它跟 CMAKE_CURRENT_SOURCE_DIR 一致,如果是 out-of-source 编译,他指的是 target 编译目录(就是:项目绝对路径/build/顶层cmakelist到子cmakelist的相对路径)。使用 ADD_SUBDIRECTORY的第二个参数可以更改这个变量的:顶层cmakelist到子cmakelist的相对路径,这个值 ...
如果是 in-source 编译,它跟 CMAKE_CURRENT_SOURCE_DIR 一致,如果是 out-of-source 编译,他指的是 target 编译目录。 使用我们上面提到的 ADD_SUBDIRECTORY(src bin)可以更改这个变量的值。 使用SET(EXECUTABLE_OUTPUT_PATH <新路径>)并不会对这个变量造成影响,它仅仅修改了最终目标文件存放的路径。
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})
add_subdirectory(source_dir [binary_dir] [EXCLUDE_FROM_ALL]) 一共有三个参数,后两个是可选参数. source_dir 源代码目录 指定一个包含CMakeLists.txt和代码文件所在的目录,该目录可以是绝对路径,也可以是相对路径,对于后者相对路径的起点是CMAKE_CURRENT_SOURCE_DIR。此外,如果子目录再次包含的CMakeLists.txt...
add_subdirectory(source_dir [binary_dir] [EXCLUDE_FROM_ALL]) 一共有三个参数,后两个是可选参数. source_dir 源代码目录 指定一个包含CMakeLists.txt和代码文件所在的目录,该目录可以是绝对路径,也可以是相对路径,对于后者相对路径的起点是CMAKE_CURRENT_SOURCE_DIR。此外,如果子目录再次包含的CMakeLists.txt...