如何使我的项目易于设置



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

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

有没有办法自动获取所需的库并将它们编译为所有平台上的 *.lib 文件?此外,涵盖项目设置会令人愉快,以便更轻松地为新的编译器或 IDE 设置项目。

我相信

,CMake(http://www.cmake.org/)是现在最好的C++。就像C++本身一样,CMake 既不漂亮也不简单,但同样,像C++一样,它非常强大且用途广泛。

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

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

  1. 它不是一个构建工具。它生成的文件将被本机构建工具使用——Visual Studio解决方案文件,GNU制作文件等等。它支持许多开箱即用的编译器 - 即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 中获取压缩包,构建 zlib,然后安装它。之后,您可以再次使用find_package。
  4. 归根结底,CMake 是高度可定制的。您可以自定义ExternalProject_Add功能以更改下载、构建和安装规则。如果它也没有帮助,您可以随时回退到调用curlgit clone来获取源代码,并手动调用构建和安装命令。

再一次,它不是一个开箱即用或刚刚有效的解决方案,但它可以完成工作,这得到了相当大的用户群的认可。套用已知的名言,"CMake 是最糟糕的构建工具,但其他工具甚至更糟"

最新更新