【摘要】 解决CMAKE_CURRENT_SOURCE_DIR在使用CMake构建项目时,经常会用到 CMAKE_CURRENT_SOURCE_DIR 这个变量,用于获取当前源代码目录的路径。然而,有时候在项目中存在多级子目录的情况下,CMAKE_CURRENT_SOURCE_DIR 变量可能无法正确解析。 本文将介绍一种解决 CMAKE_CURRENT...
PROJECT_SOURCE_DIR:工程的根目录 PROJECT_BINARY_DIR:运行cmake命令的目录,通常为${PROJECT_SOURCE_DIR}/build PROJECT_NAME:返回通过 project 命令定义的项目名称 CMAKE_CURRENT_SOURCE_DIR:当前处理的 CMakeLists.txt 所在的路径 CMAKE_CURRENT_BINARY_DIR:target 编译目录 CMAKE_CURRENT_LIST_DIR:CMakeLists.tx...
通过上述的方法,我们可以解决 CMAKE_CURRENT_SOURCE_DIR 变量无法正确解析的问题。使用 CMAKE_CURRENT_LIST_DIR 变量来代替 CMAKE_CURRENT_SOURCE_DIR 变量,能够确保无论在多级子目录中的哪个位置,都能正确获取到当前源代码目录的路径,更加方便使用CMake构建项目。 假设...
这两种用法生成的输出几乎相同,因为CMake会跟踪当前目录并替换出现的“。使用"${CMAKE_CURRENT_SOURCE_...
如果是 in-source 编译,它跟 CMAKE_CURRENT_SOURCE_DIR 一致,如果是 out-of-source 编译,他指的是 target 编译目录(就是:项目绝对路径/build/顶层cmakelist到子cmakelist的相对路径)。使用 ADD_SUBDIRECTORY的第二个参数可以更改这个变量的:顶层cmakelist到子cmakelist的相对路径,这个值 ...
CMAKE_CURRENT_SOURCE_DIR 代表当前 CMakelists.txt 所在的目录。 CMAKE_SOURCE_DIR 代表顶层 CMakeLists.txt 所在的目录。(不建议使用,无法作为子项目使用) 更多变量和内容可以查看 project 语句的官方文档cmake.org/cmake/help/la C++ 标准变量 CMAKE_CXX_STANDARD set(CMAKE_CXX_STANDARD 17) # 设置 C++...
add_subdirectory(source_dir [binary_dir] [EXCLUDE_FROM_ALL]) 一共有三个参数,后两个是可选参数. source_dir 源代码目录 指定一个包含CMakeLists.txt和代码文件所在的目录,该目录可以是绝对路径,也可以是相对路径,对于后者相对路径的起点是CMAKE_CURRENT_SOURCE_DIR。此外,如果子目录再次包含的CMakeLists.txt...
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})
3.2 top directory下的cmake配置文件CMakeLists.txt文件源码 Copy Highlighter-hljs cmake_minimum_required(VERSION3.18)project(spdlog_demo VERSION1.0.1)# 因为spdlog是基于c++11的库set(CMAKE_CXX_STANDARD11)# 指定源文件set(src_file${CMAKE_CURRENT_SOURCE_DIR}/src/main.cc ...
CMAKE_CURRENT_SOURCE_DIR:当前处理的CMakeLists.txt文件所在路径; CMAKE_CURRENT_BINARY_DIR:target编译目录; 使用ADD_SURDIRECTORY指令可以更改该变量的值; SET(EXECUTABLE_OUTPUT_PATH < dir >) 指令不会对该变量有影响,但改变了最终目标文件的存储路径; ...