【问题标题】:CMake generation requiring generated files需要生成文件的 CMake 生成
【发布时间】:2019-08-08 14:39:22
【问题描述】:

我正在多个子目录中使用 CMake 构建一个项目。有一个父目录包含一个父 CMakeLists 文件,每个子目录都包含自己的 CMakeLists 文件。因此,我使用add_subdirectory 命令来运行子目录。

我的问题是其中一个子目录生成了另一个子目录构建所需的代码。具体来说,它是 Google 协议缓冲区。如果独立运行,该子目录中的 CMakeLists 文件将生成 pb.ccpb.h 文件,但在我这样做之前,我无法生成父 CMake 文件的缓存,因为它抱怨它缺少这些源文件。

目录结构如下:

/
--CMakeLists.txt
--protobuf/
----CMakeLists.txt
----src/
--main/
----CMakeLists.txt
----src/

其中main 子目录需要protobuf 子目录生成的文件。

有没有办法让父 CMakeLists 文件构建子目录作为其生成步骤的一部分?或者以某种方式将 protobuf 文件标记为需要,但缺少,因此生成不会失败?

【问题讨论】:

    标签: cmake protocol-buffers


    【解决方案1】:

    在包含主文件之前,您可以尝试以execute_process 运行这个特定的 cmake 文件。但这违背了设计的 cmake 用法。

    正确的答案是让您的生成步骤成为构建过程的一部分。如果您可以发布一个最小的、可重现的问题示例,我可以为您提供直接解决问题的具体方法,而不是让您的解决方法奏效。

    【讨论】:

      猜你喜欢
      • 2017-10-19
      • 2021-12-27
      • 1970-01-01
      • 2020-04-10
      • 1970-01-01
      • 1970-01-01
      • 2021-04-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多