如何让我的项目易于设置?

时间:2013-11-06 10:53:57

标签: c++ visual-studio compiler-construction automation dependencies

目前,我的应用程序的存储库包含Visual Studio 11项目文件,源文件和头文件,库头及其编译的* .lib文件和一些资产。

但是,在每个新平台上设置项目以测试兼容性或继续开发是一项艰巨的任务。每次我必须为当前IDE创建一个新项目,更重要的是,下载所有使用过的第三方库并编译当前编译器的* .lib文件。

有没有办法自动获取所需的库并将它们编译为所有平台上的* .lib文件?此外,覆盖项目设置会很愉快,因此更容易为新的编译器或IDE设置项目。

1 个答案:

答案 0 :(得分:2)

我相信,CMake(http://www.cmake.org/)是目前最好的C ++。就像C ++本身一样,CMake既不漂亮又不易使用,但同样,就像C ++一样,它非常强大且功能多样。

它目前被大量项目使用,需要自定义和/或复杂的配置和构建。

以下是它的一些功能,您可能会觉得有用:

  1. 这不是构建工具。它生成将由本机构建工具使用的文件 - Visual Studio解决方案文件,GNU make文件以及不支持的文件。它支持很多开箱即用的编译器 - 即cl,gcc,clang。因此,这解决了问题的“IDE”部分。
  2. 它有一个有用的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)
  3. 它有一个ExternalProject扩展,可以帮助自动下载,构建和安装库。例如。对于zlib,将以下内容添加到CMakeLists.txt:
    include(ExternalProject)
    ExternalProject_Add(
    ZLIB
    URL http://zlib.net/zlib-1.2.8.tar.gz
    )
    
    它将从给定的URL获取tarball,构建zlib并安装它。之后,您可以再次使用find_package。
  4. 在一天结束时,CMake具有高度可定制性。您可以自定义ExternalProject_Add函数以更改下载,构建和安装规则。如果它也没有帮助,您可以随时回退到调用curlgit clone来获取源,并手动调用构建和安装命令。
  5. 再一次,它不是一个开箱即用或只是工作的解决方案,但它完成了工作,这得到了相当大的用户群的认可。用已知的引用来解释,'CMake是最糟糕的构建工具,但其他人更糟糕'