在CMake 中,PROJECT_SOURCE_DIR和CMAKE_SOURCE_DIR是两个非常重要的变量,它们都指向项目的源代码目录,但在多项目(子项目或多个 CMakeLists.txt 文件)的情况下,它们的值有所不同。 CMAKE_SOURCE_DIR 定义:CMAKE_SOURCE_DIR指向最顶层的 CMakeLists.txt 文件所在的目录,即整个项目的根目录。 用途:这个变量在...
终端输出如图 我们可以从终端输出的Message信息看到,在整个项目构建过程中,无论当前处理的是哪个CMakeLists.txt,${CMAKE_SOURCE_DIR}这个变量保持不变,是项目的根路径。 每个子项目每次调用 project() 命令后,都会重新设置 ${PROJECT_SOURCE_DIR}。这使得每个子项目可以有自己独立的源代码目录路径。
PROJECT_SOURCE_DIR 是一个CMake的变量,用于存储当前项目源代码的顶级目录的路径。这个路径通常用于表示 CMake 要编译的项目目录,即通过执行 cmake .. 命令让 CMake 读取上一级目录下的 CMakeLists.txt 文件来配置项目的参数和选项。 在CMakeLists.txt 文件中,可以使用 ${PROJECT_SOURCE_DIR} 来引用该变量,来...
原文https://stackoverflow.com/questions/32028667/are-cmake-source-dir-and-project-source-dir-the-same-in-cmake This page包含一个很好的摘要,CMake已经为我们定义了变量.我觉得有些变量是一样的.以CMAKE_SOURCE_DIR和PROJECT_SOURCE_DIR为例.它们是相同的,指的是定义顶级CMakeLists.txt的文件夹.所以我的...
PROJECT_SOURCE_DIR:工程根目录; PROJECT_BINARY_DIR:运行cmake命令的目录。笔者建议定义为${PROJECT_SOURCE_DIR}/build下。具体原因见后文外部编译部分; CMAKE_INCLUDE_PATH:环境变量,非cmake变量; CMAKE_LIBRARY_PATH:环境变量; CMAKE_CURRENT_SOURCE_DIR:当前处理的CMakeLists.txt文件所在路径; ...
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 编译目录 ...
来运行。其中外部编译,PROJECT_SOURCE_DIR仍然指代工程路径,即/backup/cmake/t1,而PROJECT_BINARY_DIR指代编译路径,即/backup/cmake/t1/build。 四、更复杂的cmake例子 本小节的任务: 1、为工程添加一个子目录src,用来放置工程源代码 2、添加一个子目录doc,用来放置工程源代码 3、在工程目录添加文本文件COPYRIGHT...
PROJECT_SOURCE_DIR: 这个变量指向你的项目的源代码目录,即包含CMakeLists.txt文件的目录。 例如,如果你的CMakeLists.txt位于/home/user/my_project/,那么PROJECT_SOURCE_DIR将被设置为这个路径。 PROJECT_BINARY_DIR: 这个变量指向你的项目的构建目录,即你从哪里调用cmake命令。 如果你在源代码目录内部调用cmake...
PROJECT_SOURCE_DIR: 当前项目的路径,即为/project PROJECT_BINARY_DIR: 项目编译后存放的路径/project/build CMAKE_CURRENT_BINARY_DIR:与PROJECT_BINARY_DIR基本相同 CMAKE_CURRENT_SOURCE_DIR:与PROJECT_SOURCE_DIR基本相同 在cmake中也可以利用一些循环方法设置变量: ...
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/static_lib) 这样,构建生成的文件就会按照指定的路径存放。 二、安装拷贝 除了设置当前目录输出外,CMake还提供了安装拷贝的功能,即将构建生成的文件和库安装到目标系统的指定路径中。这通常是通过install()命令来实现的。 install()命令有多个参数,其中最常...