另cmake -DCMAKE_VERBOSE_MAKEFILE=on ,make编译时可查看包含的头文件路径,库文件等信息
set(CMAKE_INSTALL_RPATH $ORIGIN) 通过修改编译后的 install 路径, 让程序在运行时通过程序的相对目录加载.so文件,其中$ORIGIN变量是程序的当前目录 方式2 set_target_properties(project1 PROPERTIES LINK_FLAGS "-Wl,-rpath,./") 方式2更粗暴,直接设置gcc的编译参数,指定rpaht是当前目录 修改CMakeLists.txt文...
方式2更粗暴,直接设置gcc的编译参数,指定rpaht是当前目录 修改CMakeLists.txt文件 cmake_minimum_required(VERSION3.13.3)project(project1 C)set(CMAKE_C_STANDARD99)add_library(shared SHARED library.h library.c)set(LIBRARY_OUTPUT_PATH${PROJECT_SOURCE_DIR}/lib)#方式1set(CMAKE_SKIP_BUILD_RPATHFALSE)s...
cmake_minimum_required(VERSION3.5)#被链接的库相对路径link_directories(../src/libs/lib)#被链接库的头文件相对路径include_directories(../src/libs/inc)# 查找当前目录下的所有源文件# 并将名称保存到DIR_SRCS变量aux_source_directory(.DIR_SRCS)add_executable(myProject ${DIR_SRCS})#说明被链接库的名称...
代码在git有时只需要编译出动态库和静态库,然后等着让其它程序去使用。让我们看下这种情况该如何使用cmake。首先按照如下重新组织文件,只留下testFunc.h和TestFunc.c ├── CMakeLists.txt ├── lib └── testFunc ├── testFunc.c ...
动态库名称一般为xxx.so,对于动态库即可以在编译时链接,也可以使用dlopen()/dlsym()/dlclose()函数在运行时调用,后种方式占用空间较小,且可以实现动态库在进程间共享,只在内存中保留一份,减少了内存开销。 Linux系统使用主要在与Cmake文件的使用,当然也可以手动编译。
(1)将CMake安装路径添加到Path环境变量中。Mac版本可以终端中输入命令:export PATH=/Applications/CMake.app/Contents/bin:$PATH即可。 (2)在Windows命令行中执行如下命令: 在当前构建的路径,执行cmake,cmake后面参数为CMakeLists.txt所在路径,-G用来指定构建生成目标平台的项目工程。分别对应上面的GUI的操作。
2.CMAKE_PREFIX_PATH(不知道) 3.LIBRARY_PATH:环境变量用于在程序编译期间查找动态链接库时指定查找共享库的路径. 指定gcc编译需要链接动态链接库的目录。设置libtest1和libtest2目录 # export LIBRARY_PATH=libtest1:libtest2:$LIBRARY_PATH //或写入:/etc/profile配置文件中 ...
1、配置文件/etc/ld.so.conf中指定的动态库搜索路径;默认的动态库搜索路径/lib;默认的动态库搜索路径/usr/lib。 2、静态库 可以把它想象成是一些代码的集合,在可执行程序运行前就已经加到了代码中,成为了执行程序的一部分,一般是以.a为后缀的文件名,Windows下后缀为.lib。 3、使用cmake编译opencv...
然后建立静态链接库 首先建立cpp文件 // libadd.cpp #include "head.h" int add(int a, int b) { return a+ b; } 1. 2. 3. 4. 5. 编译生成静态链接库 g++ -c libadd.cpp -I head/ // 生成libadd.o ar rcs libadd.a libadd.o // 生成libarr.a文件 ...