C++ cmake使用其他工具在生成期间检测标志

C++ cmake使用其他工具在生成期间检测标志,c++,build,cmake,C++,Build,Cmake,我面临一个问题,如何使用cmake将第三方依赖项库添加到link命令。 目前,我的cmake构建执行以下操作: 从git获取第三方库并构建它(ExternalProject\u Add) 在构建第三方libarry之后,它提供了定制的二进制文件 (名为'config++'),允许使用以下命令调用它 论据: “config++--cppflags”-获取用于 用库编译 “config++--ldflags”-获取库路径 在构建过程中放置库的位置 “config++--libs”-获取 到的库列

我面临一个问题,如何使用cmake将第三方依赖项库添加到link命令。 目前,我的cmake构建执行以下操作:

  • 从git获取第三方库并构建它(ExternalProject\u Add)
  • 在构建第三方libarry之后,它提供了定制的二进制文件 (名为'config++'),允许使用以下命令调用它 论据:
    • “config++--cppflags”-获取用于 用库编译
    • “config++--ldflags”-获取库路径 在构建过程中放置库的位置
    • “config++--libs”-获取 到的库列表(包括静态库和共享依赖库) 在与库链接时使用
(是的,config++与pkg config非常相似。)

由于第三方库构建是在项目构建期间完成的,而且我以前没有准备好config++,所以在执行“cmake build”时,是否有任何方法可以动态检测要传递给compile/linkage命令的CXXFLAGS/LDFLAGS(通过调用“config++”)


谢谢。

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

一般来说,您是对的。但是用例是这样的:$./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末尾的换行符。我需要用静态库3替换-lGraphicsMagick++-lGraphicsMagick。我还需要将命令输出'-lGraphicsMagick++…'转换为一个列表,并将其传递给link_libraries()