【发布时间】:2016-10-28 22:49:25
【问题描述】:
我有一个具有以下结构的项目
+--foo/
|
+-- CMakeLists.txt
+-- src/
+-- include/
+-- third-party/
|
+-- thing.tar.gz
构建过程的一个步骤是对thing.tar.gz 进行膨胀和解压缩,使用CMake 构建它,一旦准备好继续编译和链接src 下的任何内容(我的实际项目)。
我希望在build 目录中在源代码之外完成所有这些工作。最终,我希望我的构建过程如下:
$ cd /path/to/where/I/want/to/build/
$ cmake /path/to/directory/containing/CMakeFiles.txt/
$ make
# make inflates, untars, and builds thing.tar.gz
$ ls
# lists all the CMake stuff and the following folders:
# bin/ -> with all my application AND thing.tar.gz executables
# lib/ -> with all my libraries AND thing.tar.gz libraries
# include/ -> with all my headers AND thing.tar.gz headers
对于我的生活,我找不到简单的解决方案!到目前为止,我可以依靠 EXECUTE_PROCESS 提取到构建树中的文件夹,但我无法在生成的库上调用 CMake,或者通知我的项目的其余部分 嘿,我提取并构建了你的依赖项[这里]和[那里];你现在可以继续建设了。
你会如何解决这个问题?
【问题讨论】:
-
ExternalProject_Add 应该优雅地构建 3d 方库。在任何情况下,显示您的代码,它不会按您的预期工作。
-
@Tsyvarev 我没有超过 EXECUTE_PROCESS 的代码(正确提取到构建目录中),因为我在网上找到的每个解决方案似乎都非常复杂。