为了 ~~创作新轮子~~ 更好的让 asio 和 fiber 配合工作的一个小工具库:lib asio fiber
现在有个疑问: CMakeLists.txt
里面要怎么配置才能变成一个 可发行 的 CPP 库喵?
当然,现在作为 subtree 直接使用 CMake 包含是可行的喵…
1
GeruzoniAnsasu 2019-02-01 00:34:05 +08:00 1
感觉 c++之类的库有两种发行方式,一是单独编译成 lib 然后其它工程链接进去,另外是 header only 的库,把对应库复制进目标工程就行,这种 header only 的库有些会提供一个“编译”成单文件的成品(是的我就是在说 catch2 )
|
2
thedrwu 2019-02-01 05:54:54 +08:00 via Android
什么意思?
除了一些依赖比较复杂,或者编译需要大量资源的库,其他的东西,比如你发的这个能用 git submodule 或者 subtree 带进项目里。 |
3
baixiangcpp 2019-02-01 09:23:27 +08:00
https://cmake.org 看文档啊
|
4
ncwhale OP @thedrwu 我自己现在也是 subtree 直接带进去用的喵~
@GeruzoniAnsasu 有一部分函数不支持 header only ,多次 include 后会出现编译时多重定义问题喵…… @baixiangcpp CMake 文档看完一头雾水才来提问的,不如给个栗子喵? |
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) 这样用了。 |
6
icylogic 2019-02-17 19:12:10 +08:00
v2ex 这编辑器怎么和知乎的垃圾编辑器一样,连行首空格都保留不下来啊
|