修改CMAKE_SOURCE_DIR

 佳佳的梦Aas 发布于 2023-01-19 17:47

是否有可能修改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位于任何存储库之外,因此无法检入更改.

是否可以在cmake目录中找到该文件(其中不包含任何其他内容),并且仍然运行CMake'就像'文件位于src目录中一样?

注意

    我被客户端给了这个拆分存储库布局,没有必要告诉我它会导致问题.

    将CMakeLists.txt文件复制到目录中或从src目录中复制当然可以正常工作,但我正在寻找一种解决方案,这种解决方案不会忘记将文件复制回源控制目录.

    我已经玩过在脚本中修改CMAKE_SOURCE_DIR变量,但这实际上并没有改变工作目录.

ComicSansMS.. 7

CMAKE_SOURCE_DIR无法进行修改,不应尝试修改.

问题是这样的:如果一个项目应该被构建为一个封闭的CMake项目的一部分(也就是说,它被包含在内add_subdirectory),它就不能依赖于它在任何地方被构建为顶级项目的假设.特别是,变量喜欢CMAKE_SOURCE_DIRCMAKE_BINARY_DIR必须非常谨慎地使用,因为它们总是指向顶级CMake项目.相应的PROJECT_SOURCE_DIR,PROJECT_BINARY_DIR应该用来代替.

根据您所描述的内容,您可能处于以下两种情况之一:有问题的项目从未打算构建为另一个封闭的CMake项目的一部分,在这种情况下,您可能不应该尝试这样做.看一下ExternalProject,作为封闭项目构建过程的一部分,单独构建项目的替代方案.

另一方面,如果有问题的项目应该支持这个构建设置,它只是在CMake脚本中有一个错误,你应该努力将CMAKE_*_DIR变量替换为它们的PROJECT_*_DIR等价物.

1 个回答
  • CMAKE_SOURCE_DIR无法进行修改,不应尝试修改.

    问题是这样的:如果一个项目应该被构建为一个封闭的CMake项目的一部分(也就是说,它被包含在内add_subdirectory),它就不能依赖于它在任何地方被构建为顶级项目的假设.特别是,变量喜欢CMAKE_SOURCE_DIRCMAKE_BINARY_DIR必须非常谨慎地使用,因为它们总是指向顶级CMake项目.相应的PROJECT_SOURCE_DIR,PROJECT_BINARY_DIR应该用来代替.

    根据您所描述的内容,您可能处于以下两种情况之一:有问题的项目从未打算构建为另一个封闭的CMake项目的一部分,在这种情况下,您可能不应该尝试这样做.看一下ExternalProject,作为封闭项目构建过程的一部分,单独构建项目的替代方案.

    另一方面,如果有问题的项目应该支持这个构建设置,它只是在CMake脚本中有一个错误,你应该努力将CMAKE_*_DIR变量替换为它们的PROJECT_*_DIR等价物.

    2023-01-19 17:50 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有