cmake 强制链接静态库

add_executable(main main.cpp)
target_link_libraries(main ${CMAKE_SOURCE_DIR}/libbingitup.a)

静态库和动态库共存时,cmake会默认先链接静态库,如果要强制使用静态库,在CMakeLists.txt中如此直接指明

或者这样做也可以

So, if you want to link to a static library, you need to search for that static library:

find_library(SOMELIB libsomelib.a)
instead of:

find_library(SOMELIB somelib)
时间: 2024-11-08 14:21:39

cmake 强制链接静态库的相关文章

gcc链接静态库时对待.a文件和.o文件的不同

很多人都知道,gcc在链接静态库时是从前往后找符号.因此如果一份文件foo引用了静态库bar.a,那么在链接命令中,bar.a必须放在foo的后面,也就是像gcc ... foo ... bar.a这样:否则链接时会报找不到定义的错误(即undefined reference to ...). .a文件其实没什么特别的地方,它不过是将多个.o文件打包成一份文件.如果我们在链接命令中,直接用.o文件替换.a文件,那也需要遵循gcc的这种链接顺序吗?可以用gcc .. bar.o ... foo这样

(转)HelloWorld CMake CMake中构建静态库与动态库及其使用

继续完善Hello World,建立它的共享库, 包括静态库和动态库. 本节的任务: 1,建立一个静态库和动态库,提供HelloFunc函数供其他程序编程使用,HelloFunc 向终端输出Hello World字符串. 2,安装头文件与共享库. 3, 编写一个程序使用创建的共享库(静态库和动态库). cd /home/ccj/CMakeDemo mkdir t3   cd /backup/cmake/t3 mkdir lib   在t3目录下建立CMakeLists.txt,内容如下: PRO

HelloWorld CMake Demo 03:CMake中构建静态库与动态库及其使用

? 继续完善Hello World,建立它的共享库, 包括静态库和动态库. ? 本节的任务: 1,建立一个静态库和动态库,提供HelloFunc函数供其他程序编程使用,HelloFunc 向终端输出Hello World字符串. 2,安装头文件与共享库. 3, 编写一个程序使用创建的共享库(静态库和动态库). ? 一,准备工作: 在/home/ccj/CMakeDemo目录建立t3目录,用于存放本节涉及到的工程. cd /home/ccj/CMakeDemo mkdir t3 ? 二,建立共享库

CMake - boost - 可执行程序 - 静态库

CMake - boost 最后更新日期:2014-04-25by kagula 阅读前提:<CMake入门(二)>.Linux的基本操作 环境: Windows 8.1 64bit英文版,Visual Studio 203 Update1英文版,CMake 2.8.12.2. Cent OS 6.5.Cent OS 6.5自带gcc 4.4.7.icu 4.2.1 内容简介 介绍如果在VisualStudio上的项目依赖于boost库,如何使用cmake工具把这个项目移到Cent OS上.

解决遇到动态库链接静态库

场景: 二进制Link-->动态库-->第三方静态库 Linux环境中需要动态库链接第三方的静态库 错误: /usr/bin/ld: ../../3rdpart/x64/muduo/lib/libbase.a(AsyncLogging.o): relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC ../../3rdpart/x64/mu

CMake同时生成静态库和动态库

环境:Linux CMake 修改CMakeLists.txt 同时将模块编译生成动态库和静态库的方法: ADD_LIBRARY(nyutil SHARED ${SRC_LIST}) ADD_LIBRARY(nyutil_static STATIC ${SRC_LIST}) SET_TARGET_PROPERTIES(nyutil_static PROPERTIES OUTPUT_NAME "nyutil") SET_TARGET_PROPERTIES(nyutil PROPERTIE

链接静态库

在应用程序需要连接外部库的情况下,linux默认对库的连接是使用动态库,在找不到动态库的情况下再选择静态库.使用方式为:gcc test.cpp -L. -ltestlib如果当前目录有两个库libtestlib.so libtestlib.a 则肯定是连接libtestlib.so.如果要指定为连接静态库则使用:gcc test.cpp -L. -static -ltestlib使用静态库进行连接. 当对动态库与静态库混合连接的时候,使用-static会导致所有的库都使用静态连接的方式.这时需

CMake的简单使用(二) - 链接依赖库

这里我引入的依赖库是ncurses, 用的是ncurses的HelloWorld例子. (具体的编译ncurses过程这里不再赘述) 先把目录结构罗列下. 深层次的我就不继续展开了, 都是编译生成的头文件和库文件. 接下来先看下我们的HelloWorld.c 1 /* 2 * Filename : HelloWorld.c 3 * Description : a CMake ncurses demo 4 * Author : loop0day 5 * Created : 2018 Apr 04

CMake和静态库顺序

目录 目录 1 前言 1 方法 1 附1:链接静态库的顺序问题 2 附2:再议GCC编译时的静态库依赖次顺问题 3 附3:gcc链接参数--whole-archive的作用 4 附4:让有些"-l"链接静态库,而另一些链接共享库? 6 附5:相关博文 6 前言 C/C++程序的许多同学被静态库的依赖折腾,因为默认情况下要求被依赖的库放在依赖它的库后面,当一个程序或共享库依赖的静态库较多时,可能会陷入解决链接问题的坑中.如果对静态库不熟悉,需要结构nm等工具来解决顺序问题. 但也可以偷懒