【发布时间】:2019-08-08 14:39:22
【问题描述】:
我正在多个子目录中使用 CMake 构建一个项目。有一个父目录包含一个父 CMakeLists 文件,每个子目录都包含自己的 CMakeLists 文件。因此,我使用add_subdirectory 命令来运行子目录。
我的问题是其中一个子目录生成了另一个子目录构建所需的代码。具体来说,它是 Google 协议缓冲区。如果独立运行,该子目录中的 CMakeLists 文件将生成 pb.cc 和 pb.h 文件,但在我这样做之前,我无法生成父 CMake 文件的缓存,因为它抱怨它缺少这些源文件。
目录结构如下:
/
--CMakeLists.txt
--protobuf/
----CMakeLists.txt
----src/
--main/
----CMakeLists.txt
----src/
其中main 子目录需要protobuf 子目录生成的文件。
有没有办法让父 CMakeLists 文件构建子目录作为其生成步骤的一部分?或者以某种方式将 protobuf 文件标记为需要,但缺少,因此生成不会失败?
【问题讨论】: