这个表格总结了MODULE库、SHARED库和STATIC库的主要区别。我们可以看到,虽然MODULE库和SHARED库在某些方面很相似(例如,它们都是动态库,都可以在运行时被加载),但它们的用途和链接方式有很大的区别。 在我们继续深入了解如何在CMake中创建和使用MODULE库之前,我想引用一个C++的创始人Bjarne Stroustrup的名言:“我们的工作...
1 . CMake 引入静态库 : 使用 add_library() 导入静态库 , set_target_properties() 设置静态库路径 ; # 引入静态库 # ① 参数 1 ( add ) : 设置引入的静态库名称 # ② 参数 2 ( SHARED ) : 设置引入的函数库类型 : ① 静态库 STATIC ② 动态库 SHARED # ③ 参数 3 ( IMPORTED ) :...
add_library(message STATIC Message.hpp Message.cpp ) 该命令会生成构建工具指令,用于将指定的源文件编译为库文件,第一个参数 message 是将要生成的库文件的名字,该库名可以在整个CMakeLists.txt中使用,而实际生成的库文件名字则会包含前缀(lib)和后缀,后缀取决于第二个参数是STATIC还是SHARED,还取决于操作系统。
STATIC库是目标文件的归档文件,在链接其它目标的时候使用。SHARED库会被动态链接(动态链接库),在运行时会被加载。MODULE库是一种不会被链接到其它目标中的插件,但是可能会在运行时使用dlopen-系列的函数。 默认状态下,库文件将会在于源文件目录树的构建目录树的位置被创建,该命令也会在这里被调用。 source1 source2...
参数二:静态库(STATIC)或动态库(SHARED) 参数三:源代码文件或变量 在CMake的机制中,以上两条指令被认为是构建了同名的库,如果不进行属性设置,那么在编译时会自动进行覆盖 3.2.2 SET_TARGET_PROPERTIES SET_TARGET_PROPERTIES(projectname_static PROPERTIES ...
static{System.loadLibrary(“native-lib”);} (2) 静态库 or 共享库 通过第二个参数,我们可以指定根据源文件编译出来的是静态库还是共享库,分别对应STATIC/SHARED关键字,这里简单提一下两者的区别: 静态库:以.a结尾。静态库在程序链接的时候使用,链接器会将程序中使用到函数的代码从库文件中拷贝到应用程序中。
[SHARED|STATIC|MODULE]:生成库文件类型(共享库/静态库) [EXCLUDE_FROM_ALL]:表示该库不会被默认构建 source1, …, sourceN:生成库所依赖的源文件 例: 代码语言:javascript 代码运行次数:0 复制 Cloud Studio代码运行 ADD_LIBRARY(helloSHARED${LIBHELLO_SRC}) ...
库类型:[STATIC | SHARED | MODULE]三种。 SHARED,动态库 STATIC,静态库 MODULE,在使用 dyld 的系统有效,如果不支持 dyld,则被当作 SHARED 对待。 EXCLUDE_FROM_ALL:这个库不会被默认构建,除非有其他的组件依赖或者手工构建 SET_TARGET_PROPERTIES 设置动态库的版本号 ...