使用CMake编译其他外部库(没有CMakeLists.txt文件)

6

short -- 当只有一个Makefile或Visual Studio项目文件时,是否可以使用CMake构建外部二进制/库?

假设您有自己的项目,在src-tree中有许多CMakeLists.txt,并且有一个外部库及其源文件。您的源代码依赖于此库,一些二进制文件/库希望链接到它。如果该外部库仅具有makefile或Visual Studio项目文件而没有给定的CMakeLists.txt,则如何编译它? 是否有机会从CMake调用configure/make?或在Windows下使用VS进行批量编译?还是其他什么方法? 感谢您对此事的帮助...

1个回答

21

听起来你想要使用CMake的ExternalProject。在开发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}"
   )

关于外部项目(external projects)有一篇文章发表在The Source杂志2009年10月号上。使用外部项目,你可以调用主机系统上可用的任何make命令,在Windows、Mac和Linux上,我们使用Qt提供的configure命令构建。


我很高兴它有所帮助。有几个使用这个(例如Titan)的开源项目,你可以查看一些例子。 - Marcus D. Hanwell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接