首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

CMake 添加外部源文件

CMake 添加外部源文件项目文件树CPP11ThreadLearn ├── CMakeLists.txt------------顶级CMake文件 ├── CPP11ThreadLearn------...---------------------工具文件夹 ├── tools.cpp └── tools.h需求:我想要在项目1,2中都使用 Tools 下的文件.h .cpp不编译成静态或动态项目中...#include"tools.h" 即可以使用,像是在同一目录下的效果较好的维护性 不要在每个 CMakeLists.txt 中添加大量代码解决方案:思路:通过 CMake 配置文件加入头文件和源文件第一步...:定义函数# 顶级CMake文件中添加函数# 添加外部源码(单层文件结构)function(add_path_to_target target path) # 函数名 编译目标 添加路径...var}) endfunction() 第二步:使用函数# 在项目 1 or 2 下的 CMakeLists.txt 中使用该函数# CPP11ThreadPool/CMakeLists.txt 内容cmake_minimum_required

5210
您找到你想要的搜索结果了吗?
是的
没有找到

CMake和静态顺序

前言 C/C++程序的许多同学被静态的依赖折腾,因为默认情况下要求被依赖的放在依赖它的后面,当一个程序或共享依赖的静态较多时,可能会陷入解决链接问题的坑中。...但也可以偷懒,不关心静态的顺序问题,ld为此提供了start-group和end-group两个选项,让包含在这两者间的静态顺序可以随意。...方法 以CMake为例,假设程序x依赖三个静态:libX1.a、libX2.a和libX3.a,而libX2.a又依赖libX1.a,libX3.a依赖libX2.a和libX1.a,正常情况下的...在链接静态时,如果多个静态之间存在依赖关系,则有依赖关系的静态之间存在顺序问题,这个在使用静态时需要注意,否则会报符号找不到问题。...gcc -c a.c ar cr liba.a a.o gcc -c b.c ar cr libb.a b.o 虽然libb.a使用到了liba.o中的一些函数,但并不会将它们的定义包含进来,所以在链接

6.6K50

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

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

6.2K51

CMake打包以及支持find_package

这个CMake文件同样能够生成config_impl.hpp,并保存在当前定义的生成的二进制目录中(${CMAKE_CURRENT_BINARY_DIR}),然后被包含在config.hpp中,最终在库被使用能够被找到...target_include_directories指定了这个要用到的头文件,PUBLIC制定的包含目录包括了include/的子目录和当前CMake的二进制目录(为了包含config_impl.hpp...my_library)来链接,并且需要设置include_directories来包含相关的头文件,从而能够调用我们的。...因为其中包含了对于的一些宏的操作,因此我们需要根据配置的不同,将这两个文件放在不同的位置。但是我们怎么去区分呢?可以使用编译类型${CMAKE_BUILD_TYPE}这个变量。...为了使用导出功能,需要创建一个my_library.cmake文件,其中包含了所有编译和安装目标的引用,用户只需要包含这个文件就可以使用前面编译和安装的

34900

【Android OpenCV】Visual Studio 创建支持 OpenCV CMake 工程 ③ ( CMake 工程中配置 OpenCV 文件 | 拷贝 OpenCV 函数文件 )

文章目录 一、CMake 工程中配置 OpenCV 文件 二、拷贝 OpenCV 文件 三、测试 OpenCV 博客源码下载地址 : https://download.csdn.net/download.../han1202012/87358942 一、CMake 工程中配置 OpenCV 文件 ---- 在上一篇博客 【Android OpenCV】Visual Studio 创建支持 OpenCV 的...CMake 工程 ② ( VS 中创建 CMake 工程 | CMake 工程中配置 OpenCV 头文件 ) 中 在 Visual Studio 2019 环境下的 CMake 工程中配置了 OpenCV...头文件的搜索路径 ; # CMakeList.txt: OpenCV_Demo 的 CMake 项目,在此处包括源代码并定义 # 项目特定的逻辑。...下面开始配置 OpenCV 函数 ; 首先 , 要配置 OpenCV 的函数搜索路径 ; OpenCV 在 Windows 中的安装路径为 Y:\001_DevelopTools\032_OpenCV

1K20

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

cmake 添加头文件目录,链接动态、静态 cmake 添加头文件目录,链接动态、静态 1. 添加头文件目录INCLUDE_DIRECTORIES 2....env目录,而不是常见的/usr/、/usr/local等目录,使用cmake进行编译时需要注意头文件和文件的目录的设置。...cmake 添加头文件目录,链接动态、静态 罗列一下cmake常用的命令。 CMake支持大写、小写、混合大小写的命令。 1....(“/home/server/third/lib/libcommon.a”) # 下面的例子,只有名,cmake会自动去所包含的目录搜索link_libraries(iconv)# 传入变量link_libraries...,链接动态、静态 cmake 链接动态链接 cmake 3.19官网帮助文档 Getting started with cmake CMake projects in Visual Studio Configure

24K11

OpenHarmony开发——CMake方式组织编译的移植

CMake方式组织编译的移植以double-conversion为例,其移植过程如下文所示。...交叉编译编译参考代码仓库的 README.md 中详细介绍了使用CMake编译double-conversion的步骤,以及测试方法。本文参考该指导设置该的编译配置,并完成测试。...若开发人员在移植过程中对该的编译选项配置有疑惑的地方,可参考该指导。对于其他使用CMake可独立编译的三方,在移植时可以参考其自带的编译指导。...BUILD.gn文件实现如下,其他采用CMake方式可独立编译的三方移植到OpenHarmony平台时只需修改路径即可。...方式可独立编译的三方移植到OpenHarmony时只需修改CMAKE_FLAG的配置即可。

10620
领券