【问题标题】:cmake detect flags during build using another toolcmake 在构建期间使用另一个工具检测标志
【发布时间】:2019-01-12 15:58:09
【问题描述】:

我遇到了一个问题,如何使用 cmake 将 3rd-party 依赖库添加到链接命令。 目前,我的 cmake 构建执行以下操作:

  • 从 git 获取 3rd-party 库并构建它 (ExternalProject_Add)
  • 构建第三方库后,提供自定义二进制文件 (名为 'config++'),允许使用以下命令调用它 论据:
    • 'config++ --cppflags' - 让 CPPFLAGS 用于 用库编译
    • 'config++ --ldflags' - 获取库路径 构建过程中放置​​图书馆的地方
    • 'config++ --libs' - 获取 库列表(包括静态和共享依赖库)到 与库链接时使用。

(是的,config++ 与 pkg-config 非常相似。)

由于在项目构建期间完成了第 3 方库构建并且我之前没有准备好 config++,有没有办法动态检测 CXXFLAGS/LDFLAGS(通过调用 'config++')在何时传递给编译/链接命令执行“cmake build”?

谢谢。

【问题讨论】:

    标签: c++ build cmake


    【解决方案1】:

    您可以使用 CMake 命令 execute_process 运行外部程序,然后将其输出收集到一个变量中,然后您可以将其附加到您的构建标志中。

    【讨论】:

    • 一般来说,你是对的。但是用例是这样的: $ ./GraphicsMagick++-config --libs -lGraphicsMagick++ -lGraphicsMagick -ljbig -llcms2 -ltiff -lfreetype -ljasper -ljpeg -lpng12 -lwmflite -lXext -lSM -lICE -lX11 -llzma -lbz2 -lxml2 -lz -lm -lgomp -lpthread 有3个问题:1.输出末尾换行2.我需要用静态库替换-lGraphicsMagick++ -lGraphicsMagick 3.我也需要转换命令输出'-lGraphicsMagick++ ... ' 到一个列表并将其传递给 link_libraries()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-10
    • 2017-09-10
    • 1970-01-01
    • 1970-01-01
    • 2015-09-06
    相关资源
    最近更新 更多