CMAKE中的CMAKE\U SOURCE\U DIR和PROJECT\U SOURCE\U DIR是否相同?
包含CMake已经为我们定义的变量的良好摘要。我觉得有些变量是一样的。以CMAKE中的CMAKE\U SOURCE\U DIR和PROJECT\U SOURCE\U DIR是否相同?,cmake,Cmake,包含CMake已经为我们定义的变量的良好摘要。我觉得有些变量是一样的。以CMAKE\u SOURCE\u DIR和PROJECT\u SOURCE\u DIR为例。它们是相同的,指的是定义顶级CMakeLists.txt的文件夹。所以我的问题是:它们之间有细微的区别吗?谢谢 这些变量之间存在差异。确实指的是定义顶级CMakeLists.txt的文件夹。但是,是指包含最新的project()命令的CMakeLists.txt文件夹 例如,假设您有一个名为Outer的顶级项目,其中包含一个子目录,该
CMAKE\u SOURCE\u DIR
和PROJECT\u SOURCE\u DIR
为例。它们是相同的,指的是定义顶级CMakeLists.txt的文件夹。所以我的问题是:它们之间有细微的区别吗?谢谢 这些变量之间存在差异。确实指的是定义顶级CMakeLists.txt的文件夹。但是,是指包含最新的project()
命令的CMakeLists.txt文件夹
例如,假设您有一个名为Outer
的顶级项目,其中包含一个子目录,该子目录具有自己的名为internal
的项目<代码>外部的CMakeLists.txt具有:
project(Outer)
add_subdirectory(Inner)
和内部:
project(Inner)
然后在这两个CMakeLists文件中,CMAKE\u SOURCE\u DIR
将引用Outer
的SOURCE DIR。但是,虽然外部的PROJECT\u SOURCE\u DIR
也是同一个DIR,但内部的情况并非如此internal
的PROJECT\u SOURCE\u DIR
是包含其CMakeLists.txt的子目录
这种差异适用于所有项目
与CMAKE
变量。遵循弗雷泽的优秀答案
是正在处理的生成目录
假设您有一个名为Inner1
的目录,其中包含一个CMakeLists.txt文件,而没有在其中调用project
。然后,PROJECT\u SOURCE\u DIR
不使用Inner1
的DIR路径设置,而是在处理时设置CMAKE\u CURRENT\u SOURCE\u DIR
您可能也会发现有趣和有用的定义。您是否也可以添加与CMAKE\u CURRENT\u SOURCE\u DIR
的区别?因此(在单个CMakeLists.txt项目中)将其放在子目录(比如CMAKE)中不是一个好主意?