Cmake 实践
问题是,我应该把这两条指令写在工程的 CMakeLists.txt 还是 src 目录下的 CMakeLists.txt,把握一个简单的原则,在哪里 ADD_EXECUTABLE 或 ADD_LIBRARY, 如果需要改变目标存放路径,就在哪里加入上述的定义。 在这个例子里,当然就是指 src 下的 CMakeLists.txt 了。 4,如何安装。 安装的需要有两种,一种是从代码编译后直接 [OPTIONAL] ] [...]) 参数中的 TARGETS 后面跟的就是我们通过 ADD_EXECUTABLE 或者 ADD_LIBRARY 定义的 目标文件,可能是可执行二进制、动态库、静态库。 目标类型也就相对应的有三种,ARCHIVE 特指静态库,LIBRARY 特指动态库,RUNTIME 特指可执行目标二进制。 DESTINATIONvoid HelloFunc(); #endif 在 lib 目录下建立 CMakeLists.txt,内容如下: SET(LIBHELLO_SRC hello.c) ADD_LIBRARY(hello SHARED ${LIBHELLO_SRC}) 三,编译共享库: 仍然采用 out-of-source 编译的方式,按照习惯,我们建立一个 build 目录,在 build 0 码力 | 47 页 | 264.27 KB | 1 年前3C++高性能并行编程与优化 - 课件 - 01 学 C++ 从 CMake 学起
add_executable 可以生成可执行文件外,还可以通过 add_library 生成库 文件。 • add_library 的语法与 add_executable 大致相同,除了他需要指定是动态库还是静态库: • add_library(test STATIC source1.cpp source2.cpp) # 生成静态库 libtest.a • add_library(test SHARED source10 码力 | 32 页 | 11.40 MB | 1 年前3C++高性能并行编程与优化 - 课件 - 11 现代 CMake 进阶指南
但引入了运行时链接的麻烦 add_library 无参数时,是静态库还是动态库 ? 会根据 BUILD_SHARED_LIBS 这个变量的值决定是动态库还是静态库。 ON 则相当于 SHARED , OFF 则相当于 STATIC 。 如果未指定 BUILD_SHARED_LIBS 变量,则默认为 STATIC 。 因此,如果发现一个项目里的 add_library 都是无参数的,意味着你可以用0 码力 | 166 页 | 6.54 MB | 1 年前3Kicad 5.1 插件
${KICAD_INCLUDE_DIR}/kicad ) # 创建名为 s3D_plugin_demo1 的插件 # create a plugin named s3d_plugin_demo1 add_library( s3d_plugin_demo1 MODULE src/s3d_plugin_demo1.cpp ) _EOF 第一个演示项目非常基础; 它由一个文件组成,除了编译器默认值之外没有外 数据 转换为场景图。 第一步是扩展 ‘CMakeLists.txt’ 来构建这个教程项目: cd ${DEMO_ROOT} cat >> CMakeLists.txt << _EOF add_library( s3d_plugin_demo2 MODULE src/s3d_plugin_demo2.cpp ) target_link_libraries( s3d_plugin_demo20 码力 | 56 页 | 49.46 KB | 1 年前3Kicad 5.1 插件
为 b'' s3D_plugin_demo1 b'' 的 b''b'' 插 b''b'' 件 b'' # create a plugin named s3d_plugin_demo1 add_library( s3d_plugin_demo1 MODULE src/s3d_plugin_demo1.cpp ) _EOF 第一个演示项目非常基础; 它由一个文件组成,除了编译器默认值之外没有外部链接依赖项。我们首先创建一个源目 可视化的插件都必须通过此库将模型数据转换为场景图。 第一步是扩展‘CMakeLists.txt’来构建这个教程项目: cd ${DEMO_ROOT} cat >> CMakeLists.txt << _EOF add_library( s3d_plugin_demo2 MODULE src/s3d_plugin_demo2.cpp ) target_link_libraries( s3d_plugin_demo20 码力 | 45 页 | 612.98 KB | 1 年前3C++高性能并行编程与优化 - 课件 - 08 CUDA 开启的 GPU 编程
CXX_STANDARD 和 CUDA_ARCHITECTURES 也有 这两种方式,我一般推荐直接设置全局的 CMAKE_CXX_STANDARD 即可应用到全部 add_executable/add_library 的对象上,比较方便。 进一步:核函数调用核函数 • 从 Kelper 架构开始, __global__ 里可以 调用另一个 __global__ ,也就是说核函数 可以调用另一个核函数,且其三重尖括号0 码力 | 142 页 | 13.52 MB | 1 年前3
共 6 条
- 1