文章预览
Introduction 近日某个项目临近结束,书文档,写配置,发现网上的 CMake 教程颇旧,混乱不堪,且缺乏实际作用,难及需求。遂系统读了一些 Modern CMake 资料,撰文记录,以供参考。 实际项目包含上万行代码,依赖三四个第三方库,欲生成支持 find_package() 查找的动态库,并自动传递依赖,以使用户能够直接使用。 下面将其简化为一最小示例,便于演示流程。示例项目结构为: mylib/ ├─ inc/ │ ├─ mylib/ │ │ ├─ lib .h ├─ src/ │ ├─ lib .cc ├─ CMakeLists.txt lib.h 和 lib.cc 内容为: // inc/mylib/lib.h # ifndef LIB_H_ # define LIB_H_ namespace mylib { void foo () ; void bar () ; } // namespace mylib # endif // LIB_H_ // src/lib.cc # include # include # include # include namespace mylib { void foo () { std :: cout < "hello torch\n"; torch::Tensor tensor =
………………………………