选择在CMAKE中构建库或可执行文件

choose to build library or executable in cmake

本文关键字:可执行文件 构建 CMAKE 选择      更新时间:2023-10-16

我正在用C 构建一个库,我用CMAKE生成项目。但是,我不知道如何在图书馆的顶部目录中写一个好的cmakelists.txt。

实际上,如果我想简单地将库在另一个项目(添加库,链接源等...(中实际上有效,但是我希望如果我在没有其他项目的情况下生成库图书馆提供的演示项目。所以我想要一个

的cmakelists
  1. 将图书馆包含在项目中的情况下
  2. 在Cmakelists的情况下构建演示是最高的Cmakelists。

我的第一个想法是搜索是否已经调用" Project(XXX(",但我不知道这是否是个好主意。由于我真的不知道这是什么好习惯,我确实很难在文档中找到信息。

检测您当前项目是否也是顶级项目的快速方法是检查PROJECT_SOURCE_DIRCMAKE_SOURCE_DIR

if(PROJECT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
    message("You are building stand-alone!")
endif()

,请注意,这可能不是解决问题的最佳解决方案。允许将图书馆拉入这样的第三方构建中,需要您的库和封闭构建的明确支持。

另外,您可以单独构建两个项目,但为您的库提供了适当的包装以使其易于集成。这种方法通常更灵活,因为它使您的客户可以自由选择何时以及如何在将图书馆置于其构建之前。