首页 文章

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

提问于
浏览
1

我正在c中构建一个库,我用CMake生成项目 . 但是,我不知道如何在库的顶层目录中编写好的CMakeLists.txt .

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

如果包含在项目中,

  • 链接库

  • 在CmakeLists的情况下构建演示用作顶级cmakelists .

我的第一个想法是搜索是否已经调用了“project(xxx)”,但我不知道这是不是一个好主意 . 由于我真的不知道这有什么好的做法,我在文档中找到信息确实很困难 .

1 回答

  • 1

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

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

    但请注意,这可能不是解决您问题的最佳方案 . 允许将库拉入这样的第三方构建需要来自库和封闭构建的显式支持 .

    或者,您可以单独构建两个项目,但为库提供proper packaging以便于集成 . 这种方法通常更灵活,因为它使您的客户可以自由选择何时以及如何在构建库之前构建库 .

相关问题