c++ - 使用 CMake 编译其他外部库(没有 CMakeLists.txt)

标签 c++ makefile cmake

简而言之——当二进制文件/库仅提供一个 makefile 时,是否可以使用 CMake 从项目中构建外部二进制文件/库?

所以你有自己的项目,源文件树中的一堆 CMakeLists.txt 和这个带有源文件的外部库。你的资源依赖于这个库,一些二进制文件/库想要链接到它。如果这个外部库只有一个 makefile 或 Visual Studio 项目文件而没有给定的 CMakeLists.txt,将如何编译它? 是否有机会从 CMake 中调用 configure/make?或者在 Windows 下使用 VS 运行批编译?还是别的?

感谢您在这方面的帮助...

最佳答案

听起来您想要 CMake 的外部项目。在开发 Titan 构建系统时,我已经广泛使用它,它提供了一种管理多个源外构建的方法。您可以包含 ExternalProject,然后像下面这样的东西将构建项目:

ExternalProject_Add(Qt
   DOWNLOAD_DIR ${CMAKE_CURRENT_BINARY_DIR}
   URL ${qt_file}
   UPDATE_COMMAND ""
   SOURCE_DIR ${qt_source}
   BUILD_IN_SOURCE 1
   CONFIGURE_COMMAND ${qt_configure}
   BUILD_COMMAND ${qt_build}
   INSTALL_COMMAND "${qt_install}"
   )

October 2009 issue of the source 中有一篇关于外部项目的文章也。使用外部项目,您可以调用主机系统上可用的任何 make 命令,我们在 Windows、Mac 和 Linux 上使用他们提供的配置命令构建 Qt。

关于c++ - 使用 CMake 编译其他外部库(没有 CMakeLists.txt),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3489056/

相关文章:

c++ - 在 C++ 中,如何调用在抽象基类和派生类中都有定义的基类的虚函数定义?

linux - 编译 libgcc xgcc 错误

c - 为什么我得到 "undefined reference"- 变量标记为 'extern' 的错误?链接器问题?

Cmake 库前缀/后缀

c++ - STL中范围解析运算符的使用困惑

c++ - 如何按值对 **boost::unordered_map** 进行排序并按该顺序仅返回键?

c++ - 尝试 'replicate' shared_ptr 向上转换行为导致复制构造函数无限递归(导致段错误)

c++ - 如何在 Makefile 中向 1 头文件添加引用

makefile - 检查 makefile 中是否定义了变量

c++ - 在运行时链接外部库