为了在CMake中创建静态库,我们需要在项目的CMakeLists.txt文件中使用add_library命令,并指定库的类型为STATIC。以下是在lib/MathLib目录下创建一个静态库的基本示例: # 定义一个名为 "MathLib" 的静态库 add_library(MathLib STATIC mathlib.cpp) 在这个示例中,MathLib是我们创建的静态库的名称,STATIC关键字指定...
cmake 强制链接静态库 add_executable(main main.cpp) target_link_libraries(main ${CMAKE_SOURCE_DIR}/libbingitup.a) 静态库和动态库共存时,cmake会默认先链接静态库,如果要强制使用静态库,在CMakeLists.txt中如此直接指明 或者这样做也可以 So,ifyou want to link to a static library, you need to s...
ADD_LIBRARY(hello SHARED ${LIBHELLO_SRC}) ADD_LIBRARY(hello STATIC ${LIBHELLO_SRC}) 但是如果使用这种方式,只会构建一个动态库,不会构建出静态库,虽然静态库的后缀是.a,此时我们可以修改静态库的名字,这样是可以同时构建动态库和静态库: ADD_LIBRARY(hello SHARED ${LIBHELLO_SRC}) ADD_LIBRARY(hello_s...
add_library(libB STATIC libb.cpp) target_link_libraries(libB PRIVATE libA) target_include_directories(libB PUBLIC include) add_executable(main main.cpp) target_link_libraries(main PUBLIC libB) 在这个例子中,libB以PRIVATE方式链接到libA,这意味着只有libB可以访问libA中的公共符号,而main程序不能直接...
return a - b; } // ./3rd/math/math_add.c #include "math.h" int math_add(int a, int b) { return a + b; }./3rd/print/ aux_source_directory(./ LIST_PRINT) add_library(lib_print_dynamic SHARED ${LIST_PRINT}) add_library(lib_print_static STATIC ${LIST_PRINT}) set_target_...
-static-libstdc++ When the g++ program is used to link a C++ program, it normally automatically links against libstdc++. If libstdc++ is available as a shared library, and the -static option is not used, then this links against the shared version of libstdc++. That is normally fine. Howev...
add_library(<name> INTERFACE [IMPORTED [GLOBAL]]) 创建一个Interface库,一个INTERFACE库不会直接创建编译目标文件,即使这个库可以设置一些属性并且可以被installed,exported和imported。通常来说使用set_property(),target_link_libraries(INTERFACE),target_include_directories(INTERFACE),target_compile_options(INTERFACE...
target_link_libraries(master /usr/local/lib/libflatbuffers.a ) 1. 2. 3. 自动查找静态库 上面直接写死库文件的完整路径,可移植性大打折扣。CMake的好处本身就是跨平台的,各个平台的库文件路径不一样,可以使用find_library来获取完整路径。不过find_library默认情况下是优先查找动态库的,需要改一下 ...
.a文件是静态库文件。 ①主要用到的就是 ADD_LIBRARY这个命令。 生成的库文件名字为 lib+库名 .so/.a ADD_LIBRARY(hello SHARED hello.c) ADD_LIBRARY(hello_static STATIC hello.c) #静态库改了名字,因为不允许库名一样,如果不改只会生成动态库。后续需要再进行改名操作。
link_libraries(library1 <debug | optimized> library2 ...) # 直接是全路径link_libraries(“/home/server/third/lib/libcommon.a”) # 下面的例子,只有库名,cmake会自动去所包含的目录搜索link_libraries(iconv)# 传入变量link_libraries(${RUNTIME_LIB}) ...