【问题标题】:Building third-party libraries during the build process在构建过程中构建第三方库
【发布时间】: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 的代码(正确提取到构建目录中),因为我在网上找到的每个解决方案似乎都非常复杂。

标签: c++ build cmake


【解决方案1】:

使用 -DCMAKE_PREFIX_PATH= 将 cmake 指向在您自己的项目的 cmake 调用期间安装依赖项的构建工件的位置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-17
    • 2019-04-22
    • 2018-01-06
    • 2014-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多