CMAKE_SOURCE_DIR是cmake最初被调用的位置,CMAKE_CURRENT_SOURCE_DIR也是cmake当前正在工作的位置。例如,如果使用add_subdirectory命令将依赖项包含到项目中,则依赖项将具有自己的依赖项,CMAKE_CURRENT_SOURCE_DIR但CMAKE_SOURCE_DIR将保持不变。 展开一些程序员花花公子的评论,想象一下您在项目的不同目录中具有以下...
【摘要】 解决CMAKE_CURRENT_SOURCE_DIR在使用CMake构建项目时,经常会用到 CMAKE_CURRENT_SOURCE_DIR 这个变量,用于获取当前源代码目录的路径。然而,有时候在项目中存在多级子目录的情况下,CMAKE_CURRENT_SOURCE_DIR 变量可能无法正确解析。 本文将介绍一种解决 CMAKE_CURRENT...
通过上述的方法,我们可以解决 CMAKE_CURRENT_SOURCE_DIR 变量无法正确解析的问题。使用 CMAKE_CURRENT_LIST_DIR 变量来代替 CMAKE_CURRENT_SOURCE_DIR 变量,能够确保无论在多级子目录中的哪个位置,都能正确获取到当前源代码目录的路径,更加方便使用CMake构建项目。 假设...
Git 天生提供了 pre-commit hooks 能力,允许我们预设一些检查脚本在提交前做一些检查。手动编写脚本是比...
CMAKE_BINARY_DIR,可见项目 build 目录 可根据目录变量进行相关配置 [cmake] -- 1.CMAKE_SOURCE_DIR : D:/project-cpp/cmake-simple/simple [cmake] -- 2.CMAKE_BINARY_DIR : D:/project-cpp/cmake-simple/simple/build [cmake] -- 3.CMAKE_CURRENT_SOURCE_DIR : D:/project-cpp/cmake-simple/...
如果是 in-source 编译,它跟 CMAKE_CURRENT_SOURCE_DIR 一致,如果是 out-of-source 编译,他指的是 target 编译目录。 使用我们上面提到的 ADD_SUBDIRECTORY(src bin)可以更改这个变量的值。 使用SET(EXECUTABLE_OUTPUT_PATH <新路径>)并不会对这个变量造成影响,它仅仅修改了最终目标文件存放的路径。
如果是 in-source 编译,它跟 CMAKE_CURRENT_SOURCE_DIR 一致,如果是 out-of-source 编译,他指的是 target 编译目录(就是:项目绝对路径/build/顶层cmakelist到子cmakelist的相对路径)。使用 ADD_SUBDIRECTORY的第二个参数可以更改这个变量的:顶层cmakelist到子cmakelist的相对路径,这个值 ...
CMAKE_CURRENT_SOURCE_DIR,CMAKE_CURRENT_LIST_DIR:正在处理的CMakeLists.txt所在目录,两者可能略有区别,建议使用后者,尤其在依赖管理时的目录 注:上文中不同前缀对应的细微区别如下 CMAKE_通常指的是根项目的属性,建议不要直接使用,因为这使得根项目无法作为子项目存在。(根项目指的是启动 CMake 时的 CMakeLis...
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})
PROJECT_SOURCE_DIR:工程根目录; PROJECT_BINARY_DIR:运行cmake命令的目录。笔者建议定义为${PROJECT_SOURCE_DIR}/build下。具体原因见后文外部编译部分; CMAKE_INCLUDE_PATH:环境变量,非cmake变量; CMAKE_LIBRARY_PATH:环境变量; CMAKE_CURRENT_SOURCE_DIR:当前处理的CMakeLists.txt文件所在路径; ...