【问题标题】:Call external programs with CMake使用 CMake 调用外部程序
【发布时间】:2011-09-05 23:48:47
【问题描述】:

我尝试搜索 CMake 文档,但不知道如何从 CMake 调用外部程序。

我想做的事情很少。

  1. 编译使用 makefile 的其他第三方依赖项
  2. Thrift 定义文件编译为 C++/Python 存根。
  3. 编译Cython定义文件。

另一个问题是,处理这些情况的好方法是什么?当 CMake 中的“C”代表跨平台时,感觉就像直接从 CMake 调用 shell 脚本并不那么干净。

编辑:我有几个额外的问题。之前,在我的构建中,我预先构建了我的依赖项,项目本身使用 FIND_PACKAGE(...) 来查找依赖项的头文件/库。

现在,我使用 ExternalProject_Add() 来编译依赖项,但问题是,当我运行 cmake . 时,我的所有 FindXYZ() 函数都失败了,因为执行 CMake 时依赖项不存在。

在这种情况下,我应该如何在我的项目中包含第三方库?

【问题讨论】:

    标签: cmake thrift


    【解决方案1】:
    1. http://www.kitware.com/media/html/BuildingExternalProjectsWithCMake2.8.html

    2+3。可以使用 CONFIGURE_COMMAND/BUILD_COMMAND/INSTALL_COMMAND 破解

    【讨论】:

    • 哇,在发现 ExternProject_Add() 之后,我对 CMake 的尊重大大提高了。我很快就会尝试其他的东西。
    • 感谢 Anycorn。但是,我对我的构建还有更多问题。如果可以的话,你会好心回答吗?谢谢!
    • @不确定我是否理解问题,您能详细说明一下吗?
    • 我最终更改了我的 makefile。基本上,FIND_PACKAGE() 命令在 cmake 生成 makefile 时执行。我曾经使用 FIND_PACKAGE() 为我的项目查找第三方库。但是,如果我开始使用 ExternalPackage_Add(),则在生成 makefile 之后会构建第三方库。因此,cmake 无法继续生成 makefile,因为它找不到 FIND_PACKAGE() 引用的依赖项。
    • 我刚刚删除了 find_packages(),因为我控制了外部包的编译方式,所以我知道编译的头文件/库的确切位置。所以我只提到了 include_directories() 和 target_link_libraries() 中的那些位置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-26
    • 2020-11-28
    • 1970-01-01
    • 2013-08-14
    • 1970-01-01
    相关资源
    最近更新 更多