首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Cmake使用

参数使用括弧括起 参数之间使用空格或分号分开 指令是大小写无关的,参数和变量是大小写相关的 set(HELLO hello.cpp) add_executable(hello main.cpp hello.cpp...) ADD_EXECUTABLE(hello main.cpp ${HELLO}) 变量使用${}方式取值,但是在 IF 控制语句中是直接使用变量名 重要指令和CMake常用变量 重要指令 cmake_minimum_required...main.cpp) 语法:add_executable(exename source1 source2 … sourceN) target_link_libraries – 为 target 添加需要链接的共享库...—>相同于指定g++编译器-l参数,用在add_executable之后(link_library用在add_excutable之前) # 将hello动态库文件链接到可执行文件main target_link_libraries...build):推荐使用 将编译输出文件与源文件放到不同目录中 ## 外部构建 # 1.

1.3K30

cmake链接静态库-static-libstdc++问题

在嵌入式平台中,业务使用C语言开发,在交叉编译过程中会链接一个第三方的c++静态库,该第三放库使用了std,需要链接libstdc++的库,由于所在的嵌入式平台中没有libstdc++.so库,如果将libstdc...++.so拷贝板子上,需要占用5MB空间,很浪费空间,准备使用libstdc++的静态库,在链接过程中出现如下问题;   整个业务的编译使用cmake构建,使用如下方式进行链接; add_executable...'libstdc++'的库,在cmake中有链接-static-libstdc++,而且交叉工具链中是有libstdc++.a库,当我们将cmake改为: add_executable(${target...'lstdc++'是gcc和g++都能识别,但是'-static-libstdc++'只有g++可以识别,而我的业务代码都是使用C语言编写的,在链接cmake默认使用的是gcc,但是gcc不能识别'-...static-libstdc++',最终不会链接到实际的libstdc++.a,所以在链接时出现不能识别std的问题; 知道原因了,就很好解决了,在链接阶段将cmake链接选项改为g++即可,添加如下一行就可以正常链接成功

5.8K51

CMake使用总结

/lib/libCd.so 使用下面的CMakeLists.txt文件,目标是编译当前目录和./other目录下的所有源文件,并链接./lib目录下的相应库文件到最终的可执行文件..../lib ) 添加生成目标 使用SRC_LIST源文件列表里的文件生成一个可执行文件hello add_executable(hello ${SRC_LIST}) 使用SRC_LIST源文件列表里的文件生成一个静态链接库...还有一点,B.a会告诉CMake优先使用静态链接库libB.a,C.so会告诉CMake优先使用动态链接库libC.so,也可直接使用库文件的相对路径或绝对路径。...使用绝对路径的好处在于,当依赖的库被更新时,make的时候也会重新链接。...自定义链接选项 有时候需要自定义链接选项,比如需要单独对B.a使用--whole-archive选项,可以 target_link_libraryies(hello A -Wl,--whole-archive

1.7K10

CMake 使用学习

其作用是: 当使用 CTest 模块时,DBUILD_TESTING 用来控制是否使能 testing。 --trace :用于详细输出 cmake 的每一行信息。...CMakeLists.txt 编写 3.1 设定编译器 在运行 CMake 前首先需要指定 CC、CXX 编译器,否则 CMake使用系统默认的 CC、CXX 编译器。...为目标文件添加链接库 target_link_libraries(one -lcrypt -lcap) one 是 CMake 创建的目标文件的名称。...3.6 设定变量、缓存项、属性 【注】访问一个名为 VARIABLE 的局部变量使用 {VARIABLE},访问一个名为 VARIABLE 的环境变量使用 ENV{VARIABLE}。...CMakeCache.txt 文件主要保存的是 cmake 过程中需要使用的环境变量,当 cmake 命令寻找变量时,它会首先去 CMakeCache.txt 文件中寻找。

2.4K30

cmake基本使用

为什么要用cmake?makefile的语法非常复杂,光文档就有200多页,使用起来不方便,只支持linux平台,而cmake语法只有几页,用法通俗易懂,上手简单,代码量少,跨平台。...这也是大多数人使用cmake的原因 cmake默认使用CMakeLists.txt文件作为编写脚本的文件,下面编写了一个简单的CMakeLists.txt #1.cmake verson,指定cmake...2.方法 project (HELLO) #指定项目名称,生成的VC项目的名称; ---- 使用${HELLO_SOURCE_DIR}表示项目根目录 include_directories:指定头文件的搜索路径...gcc的-I参数 ---- include_directories (${HELLO_SOURCE_DIR}/Hello) #增加Hello为include目录 link_directories:动态链接库或静态链接库的搜索路径...DDEBUG)将在gcc命令行添加DEBUG宏定义; ---- add_definitions( “-Wall -ansi –pedantic –g”) target_link_libraries:添加链接

1.6K31

重磅!最快人脸检测开源库对比:ZQCNN-MTCNN vs libfacedetection

于是 Amusi 第一时间联系了左庆大佬,得到他本人的授权,下面实验对比数据来自 ZQCNN-MTCNN-vs-libfacedetection: 链接: https://github.com/zuoqing1988...ZQCNN-MTCNN-vs-libfacedetection ZQCNN:下载时间2019-03-25 09:00 依赖库: windows:mkl, opencv3.4.2 arm-linux: openblas...(二) ARM-LINUX下对比 (测试机器为firefly rk3399) ZQCNN: 先编译OpenBLAS, OpenCV3.4.2, 然后编译ZQCNN, 使用命令cmake .....-DSIMD_ARCH_TYPE=arm64 -DBLAS_TYPE=openblas_zq_gemm 具体参见ZQCNN项目的README libfacedetection: 命令cmake .....侃侃 ZQCNN-MTCNN 和 libfacedetection 都是特别好的人脸开源库,检测速度都很快,在此感谢左庆和于仕琪老师的开源精神 两个项目链接如下,欢迎 star支持: https://github.com

3.2K31

cmake 添加头文件目录,链接动态、静态库

cmake 添加头文件目录,链接动态、静态库 cmake 添加头文件目录,链接动态、静态库 1. 添加头文件目录INCLUDE_DIRECTORIES 2....为工程生成目标文件 7.最后贴一个完整的例子 参考资料 最近需要将Windows10系统下使用VS2017编译的VC++项目放到CentOS Linux服务器上跑,最简单的当然是使用cmake作为项目编译和管理工具了...,这样就不需要写makefile了,使用cmake管理编译项目相对来说比较简单。.../bin/glnxa64/libmx.so") 可以链接一个,也可以多个,中间使用空格分隔. 5....,链接动态、静态库 cmake 链接动态链接cmake 3.19官网帮助文档 Getting started with cmake CMake projects in Visual Studio Configure

23.1K11

Windows下MSYS2中编译OpenBLAS过程记录

OpenBLAS(https://github.com/xianyi/OpenBLAS)目前已经提供了CMakeLists.txt,在Windows下可以通过cmake生成Makefile脚本,然后用MinGW...但是,CMakeLists.txt中已经有警告申明,cmake支持还在实验中,并不会生成与OpenBLAS自带的Makefiles相同的内容,而且只支持32位编译,而且目前版本的CMakeLists.txt...https://github.com/xianyi/OpenBLAS/blob/develop/CMakeLists.txt 这诸多限制,带来问题就是用在windows下用cmake编译OpenBLAS...上运行可能会存在指令集兼容性问题 USE_THREAD=1 指定使用多线程,OpenBLAS默认就是使用多线程模式,所以这个参数可以去掉 NUM_THREADS=24 多线程模式时最大线程数...官网的说明,MSVC下只能使用OpenBLAS动态库,MinGW则动态库和静态库都可以使用

5.2K120

cmake:动态链接库(so)中静态链接tcmalloc(gperftools2.4)暨静态链接libstdc++

将tcmalloc作为动态库使用,非常方便,网上有很多资料介绍了。...tcmalloc.a也可以以静态链接的方式加入应用程序中,大概因为使用太方便,网上关于这方面的介绍都是一笔带过,但是如果要在动态 库(so)中静态编译tcmalloc,却是有所不同的。...我的项目中有一个so动态库,需要在java中通过jni调用,因为涉及频繁的内存分配操作所以这个so希望用tcmalloc管理内存池以提高系统运行效率,如果使用以动态库方式使用tcmalloc。...使用这种方案,我的so库代码不需要在编译时链接tcmalloc,什么都不用改变,就能使用tcmalloc。...总结 如果在可执行程序中静态链接tcmalloc时,用默认参数编译tcmalloc就好了,无需带-fPIC参数, 但是在动态库(so)中静态链接tcmalloc,必须要用-fPIC重新编译tcmalloc

1.8K10
领券