V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ncwhale
V2EX  ›  C

弄了个 CPP 工具库,求教 CMake 部分配置问题喵~

  •  
  •   ncwhale · 2019-01-31 23:56:36 +08:00 · 2709 次点击
    这是一个创建于 2124 天前的主题,其中的信息可能已经有所发展或是发生改变。

    为了 ~~创作新轮子~~ 更好的让 asio 和 fiber 配合工作的一个小工具库:lib asio fiber

    现在有个疑问: CMakeLists.txt 里面要怎么配置才能变成一个 可发行 的 CPP 库喵?

    当然,现在作为 subtree 直接使用 CMake 包含是可行的喵…

    6 条回复    2019-02-17 19:12:10 +08:00
    GeruzoniAnsasu
        1
    GeruzoniAnsasu  
       2019-02-01 00:34:05 +08:00   ❤️ 1
    感觉 c++之类的库有两种发行方式,一是单独编译成 lib 然后其它工程链接进去,另外是 header only 的库,把对应库复制进目标工程就行,这种 header only 的库有些会提供一个“编译”成单文件的成品(是的我就是在说 catch2 )
    thedrwu
        2
    thedrwu  
       2019-02-01 05:54:54 +08:00 via Android
    什么意思?
    除了一些依赖比较复杂,或者编译需要大量资源的库,其他的东西,比如你发的这个能用 git submodule 或者 subtree 带进项目里。
    baixiangcpp
        3
    baixiangcpp  
       2019-02-01 09:23:27 +08:00
    https://cmake.org 看文档啊
    ncwhale
        4
    ncwhale  
    OP
       2019-02-01 10:17:36 +08:00
    @thedrwu 我自己现在也是 subtree 直接带进去用的喵~


    @GeruzoniAnsasu 有一部分函数不支持 header only ,多次 include 后会出现编译时多重定义问题喵……


    @baixiangcpp CMake 文档看完一头雾水才来提问的,不如给个栗子喵?
    icylogic
        5
    icylogic  
       2019-02-17 19:10:54 +08:00
    不折腾 header only 就发布成头文件 + 动态库的形式啊。

    libfoo:

    include/
    interface.h
    src/
    impl.h
    impl.cpp
    cmake/
    fooConfig.cmake.in
    CMakeLists.txt

    CMakeLists.txt:
    add_library(foo)
    target_set_properties(foo PUBLIC_HEADERS include/interface.h)
    install(TARGETS foo
    LIBRARY DESTINATION lib
    PUBLIC_HEADERS DESTINATION include
    )

    然后 cpack 就可以了。大概是这样吧,准确的语法懒得查了。
    fooConfig.cmake.in 是用来让别人通过 cmake 引用你的库的,install 里把它放到 cmake dir,这样别人就可以直接 find_package(foo) 这样用了。
    icylogic
        6
    icylogic  
       2019-02-17 19:12:10 +08:00
    v2ex 这编辑器怎么和知乎的垃圾编辑器一样,连行首空格都保留不下来啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5043 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 09:50 · PVG 17:50 · LAX 01:50 · JFK 04:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.