C++高性能并行编程与优化 - 课件 - 16 现代 CMake 模块化项目管理指南biology : target_link_libraries(pybmain PUBLIC biology) • 由于 PUBLIC 属性具有传染性,根 /biology/include 现在也加入 pybmain 的 头文件搜索路径了,因此 pybmain 里可以 #include 到 biology 的头文件。 • 同理如果又有一个 target_link_libraries(zxxpig PUBLIC s(yourapp ${XXX_INCLUDE_DIRS}) • target_link_libraries(yourapp ${XXX_LIBRARIES}) • 现代(小彭老师推荐): • find_package(XXX REQUIRED COMPONENTS xxx) • target_link_libraries(yourapp XXX::xxx) 大多都能同时兼容现代和古代 cpp) • find_package(TBB CONFIG REQUIRED COMPONENTS tbb) • target_link_libraries(yourapp PUBLIC TBB::tbb) 古代 CMake 常见问题 1. target_link_libraries(yourapp ${XXX_LIBRARIES}) 2. target_include_directories(yourapp0 码力 | 56 页 | 6.87 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 01 学 C++ 从 CMake 学起准备的参数可能对 MSVC 不适用。 • CMake 可以自动检测当前的编译器,需要添加哪些 flag 。比如 OpenMP ,只需要在 CMakeLists.txt 中指明 target_link_libraries(a.out OpenMP::OpenMP_CXX) 即可。 输出的可执行文件 输入的多个源文件 CMake 的命令行调用 • 读取当前目录的 CMakeLists.txt ,并在 环境下,初学者自己创建库时,建议使用静态库。 • 但是他人提供的库,大多是作为动态库的,我们之后会讨论如何使用他人的库。 • 创建库以后,要在某个可执行文件中使用该库,只需要: • target_link_libraries(myexec PUBLIC test) # 为 myexec 链接刚刚制作的库 libtest.a • 其中 PUBLIC 的含义稍后会说明( CMake 中有很多这样的大写修饰符) PRIVATE 对他们同理: • target_include_directories(myapp PUBLIC /usr/include/eigen3) # 添加头文件搜索目录 • target_link_libraries(myapp PUBLIC hellolib) # 添加要链接的库 • target_add_definitions(myapp0 码力 | 32 页 | 11.40 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 11 现代 CMake 进阶指南.cmake 这个配置文 件,并根据里面的配置信息创建 TBB::tbb 这个伪对象(他实际指向真正的 tbb 库文件路径 /usr/lib/libtbb.so ),之后通过 target_link_libraries 链接 TBB::tbb 就可以正常工作了。 TBB::tbb 的秘密:自带了一些 PUBLIC 属性 TBB::tbb 是一个伪对象 (imported) ,除了他会指向 /usr/lib/libtbb0 码力 | 166 页 | 6.54 MB | 1 年前3
共 3 条
- 1













