gpt4 book ai didi

cmake - 修改CMAKE_SOURCE_DIR

转载 作者:行者123 更新时间:2023-12-04 18:07:56 27 4
gpt4 key购买 nike

是否可以将CMAKE_SOURCE_DIR修改为“欺骗” CMake以使顶级CMakeLists.txt文件位于其他位置?

我有以下目录结构:

\src            <--- not a repository
\cmake <--- repository
\common <--- repository
\project1 <--- repository
...
CMakeLists.txt <--- would like to locate this inside the cmake repository

上述结构的问题在于,顶层CMakeLists.txt位于任何存储库之外,因此无法 checkin 更改。

是否可以在 cmake目录(不包含其他内容)中定位该文件,并仍然以“好像”文件位于 src目录中的方式运行CMake?

笔记
  • 我已经被客户认为是这种拆分存储库布局,无需告诉我它会导致问题。
  • 当然,将CMakeLists.txt文件复制到src目录中也可以将其复制出来,但是我正在寻找一种解决方案,它可以避免忘记将文件复制回源代码控制目录的风险。
  • 我在脚本中修改了CMAKE_SOURCE_DIR变量,但实际上并没有改变工作目录。
  • 最佳答案

    无法修改CMAKE_SOURCE_DIR,因此不应尝试。

    问题是这样的:如果应该将一个项目作为封闭的CMake项目的一部分进行构建(即通过add_subdirectory包含在内),则该项目一定不能依赖于在任何地方将其作为顶级项目进行构建的假设。 。特别是,像 CMAKE_SOURCE_DIR CMAKE_BINARY_DIR 这样的变量必须格外小心,因为它们始终引用顶级CMake项目。应改为使用相应的 PROJECT_SOURCE_DIR PROJECT_BINARY_DIR

    根据您所描述的,您可能处于以下两种情况之一:所讨论的项目永远都不打算作为另一个封闭的CMake项目的一部分而构建,在这种情况下,您可能不应该尝试这样做。看一看ExternalProject,它是您作为封闭项目的构建过程的一部分独立构建项目的替代方法。

    另一方面,如果该项目应支持此build设置,则该项目在CMake脚本中仅存在一个错误,您应努力将CMAKE_*_DIR变量替换为其等效的PROJECT_*_DIR变量。

    关于cmake - 修改CMAKE_SOURCE_DIR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22214349/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com