代码之家  ›  专栏  ›  技术社区  ›  johnb003

在哪里可以设置常见的cmake配置设置?

  •  0
  • johnb003  · 技术社区  · 6 年前

    我一直在努力找出并采用最新的cmake最佳实践,因为我正在建立一个大型项目。有几个人主张不要把什么放在你的cmake文件中。一般来说,它似乎可以归结为(意译):

    cmake文件应该只描述目标构建所需的内容,而不是对其他内容进行假设。

    然而,这一切都是有道理的,这引出了一个问题:

    在哪里? 应该 如果不是在cmake脚本中,您定义了所有的“可选”设置吗?

    而且,如果我们只是讨论一个库,与依赖于许多库的应用程序相比,这似乎是不同的。

    如果你只是在建一个小图书馆,这一切看起来都很好,无论谁使用这个图书馆都有责任决定所有这些额外的细节。

    但是,当构建具有许多依赖项的大型应用程序时,最好在某个地方定义所有这些设置。在大多数构建系统中,您可以获得常见的配置,如调试和发布构建。cmake似乎对“debug”、“release”、“minsizerel”、“relwithdebinfo”有标准支持(顺便说一句,我永远记不起缩写词),但这些都不是强制的,所以您可能只得到一个空字符串。

    即使您打算尊重这些,您是否只检查构建配置并设置根cmake脚本中的所有内容或什么?

    作为一个具体的例子:我的项目依赖于一堆第三方库,而不是将它们全部作为项目的一部分来构建,我试图预先构建它们。

    为了简单起见,我现在有一个构建脚本,它规范了我如何构建所有第三方库:

    cmake -DBUILD_SHARED_LIBS:BOOL=OFF \
      -DBUILD_STATIC_LIBS:BOOL=ON \
      -DCMAKE_POSITION_INDEPENDENT_CODE=On \
      -DCMAKE_INSTALL_PREFIX=${install_prefix} \
      -DCMAKE_PREFIX_PATH="${DIST}" $@ ${CMAKE_SRC_DIR}
    

    然而,这个构建脚本是bash,而且不完全可移植。有更好的选择对吧?

    我不希望项目的其他开发人员必须记住许多参数才能传递给cmake,以便按照预期的方式构建项目。

    0 回复  |  直到 6 年前