目前,我的应用程序的存储库包含Visual Studio 11项目文件,源文件和头文件,库头及其编译的* .lib文件和一些资产。
但是,在每个新平台上设置项目以测试兼容性或继续开发是一项艰巨的任务。每次我必须为当前IDE创建一个新项目,更重要的是,下载所有使用过的第三方库并编译当前编译器的* .lib文件。
有没有办法自动获取所需的库并将它们编译为所有平台上的* .lib文件?此外,覆盖项目设置会很愉快,因此更容易为新的编译器或IDE设置项目。
答案 0 :(得分:2)
我相信,CMake(http://www.cmake.org/)是目前最好的C ++。就像C ++本身一样,CMake既不漂亮又不易使用,但同样,就像C ++一样,它非常强大且功能多样。
它目前被大量项目使用,需要自定义和/或复杂的配置和构建。
以下是它的一些功能,您可能会觉得有用:
find_package
宏,可帮助查找已安装的库以在项目中使用它。例如。如果你安装了boost库,你可以使用类似下面的代码,我相信这是相当自我描述的find_package( Boost COMPONENTS thread system)
if(Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS})
link_directories(${Boost_LIBRARY_DIRS})
endif(Boost_FOUND)
include(ExternalProject)
ExternalProject_Add(
ZLIB
URL http://zlib.net/zlib-1.2.8.tar.gz
)
它将从给定的URL获取tarball,构建zlib并安装它。之后,您可以再次使用find_package。 curl
或git clone
来获取源,并手动调用构建和安装命令。再一次,它不是一个开箱即用或只是工作的解决方案,但它完成了工作,这得到了相当大的用户群的认可。用已知的引用来解释,'CMake是最糟糕的构建工具,但其他人更糟糕'