此页面包含CMake已为我们定义的变量的完整摘要.我觉得有些变数是一样的.采取的例子CMAKE_SOURCE_DIR和PROJECT_SOURCE_DIR为例.它们是相同的,指的是定义顶级CMakeLists.txt的文件夹.所以我的问题是:它们之间有细微差别吗?谢谢.
Fra*_*ser 74
还有就是这些变量之间的差异. CMAKE_SOURCE_DIR确实是指定义顶级CMakeLists.txt的文件夹.但是,PROJECT_SOURCE_DIR指的是包含最新project()命令的CMakeLists.txt的文件夹.
例如,假设您有一个调用的顶级项目Outer,它包含一个子目录,其中有一个名为的项目Inner. Outer的CMakeLists.txt有:
project(Outer)
add_subdirectory(Inner)
Run Code Online (Sandbox Code Playgroud)
并且Inner是:
project(Inner)
Run Code Online (Sandbox Code Playgroud)
然后在这两个CMakeLists文件中,CMAKE_SOURCE_DIR将引用Outer的源目录.不过,虽然PROJECT_SOURCE_DIR对于Outer也在此同一目录,这是不适合的情况Inner. Inner的PROJECT_SOURCE_DIR是含有其的CMakeLists.txt子目录.
这种差异适用于所有PROJECT_<var>vs CMAKE_<var>变量.
按照弗雷泽的出色回答。
CMAKE_CURRENT_SOURCE_DIR是the build directory being processed.
假设您有一个名为的目录,Inner1其中包含一个 CMakeLists.txt 文件,但没有在其中调用project。thenPROJECT_SOURCE_DIR不是用Inner1的 dir 路径CMAKE_CURRENT_SOURCE_DIR设置的,而是在处理时设置的。
您可能还会发现CMAKE_CURRENT_LIST_DIR很有趣,并且列表文件的定义很有用。
| 归档时间: |
|
| 查看次数: |
19844 次 |
| 最近记录: |