缘起:之前给别人提供的SDK都是在Linux下使用Qt搭建的,但是最近有客户不使用Qt,而是需要在Linux下使用cmake进行进行文件组织。于是我就进行谷歌,现在将可用的程序记录下来。...<< std::endl; return 0; } CMakeLists.txt #Cmake 最低版本要求 cmake_minimum_required(VERSION 3.5...编译步骤: cd source(CMakeLists.txt所在目录) cmake . make ①文件及所在目录 image.png ②终端改变目录,执行cmake . ?...小结 刚安装的ubuntu 16.04没有cmake, 使用sudo apt install cmake命令可完成安装。...在build文件夹中进行编译 过程: 进入build文件夹 cmake .. make 注意是 cmake .. 中间文件在build文件下 ? 可执行文件所在目录 ?
优势: 跨平台(Windows、Linux、macOS 等)。 支持复杂的项目结构(多目录、多库)。 自动管理依赖关系(如头文件、第三方库)。...示例如下: cmake_minimum_required(VERSION 3.15) //最低CMake版本(不能比当前机器CMake版本高) project(test)...安装与打包 定义安装规则: install(TARGETS my_app DESTINATION bin) # 安装可执行文件到 bin 目录 install(FILES include/utils.h...相关文章推荐 【Linux】手把手教你从零上手Vim编辑器 【Linux】手把手教你从零上手gcc/g++编译器 【Linux】实现一个简易的shell命令行 【Linux】基本指令(下) 【...Linux】基本指令(中) 【Linux】基本指令(上)
已有版本如下: cmake --version pip3 install --upgrade pip error 需要对应python3的pip 然后更新cmake pip install -i...-m pip --version Ouput: pip 19.1.1 from /usr/local/lib/python3.4/dist-packages/pip (python 3.4) cmake
本文主要讲述在Linux下如何使用CMake来编译我们的程序。..._TEST_FUNC_H_ #define _TEST_FUNC_H_ void func(int data); #endif 修改main.c,调用testFunc.h里声明的函数func(),..._TEST_FUNC1_H_ #define _TEST_FUNC1_H_ void func1(int data); #endif 再修改main.c,调用testFunc1.h里声明的函数func1...(), #include h> #include "testFunc.h" #include "testFunc1.h" int main(void) { func(100...首先按照如下重新组织文件,只留下testFunc.h和TestFunc.c, 我们会在build目录下运行cmake,并把生成的库文件存放到lib目录下。
,而在linux和常规的makefile风格也打不一致,文件太多,不方便学习研究。 ...不够经过这段时间系统的研究,觉得cmake还是非常强大的,吃透之后它的确非常方便,比手工写makefile要简单的多,因此在linux使用cmake我觉得是非常合适的,不过在windows则相对要差一些...${PCH_DIR}/${PCH_NAME}.pch) ENDIF(MSVC) ENDMACRO(USE_MSVC_PCH) 需要注意的是,PCH_HEADER_FILE (stdafx.h)...}/build/) # 预编译头文件和源文件的路径 set(STDAFX_PCH_H ${CMAKE_SOURCE_DIR}/Protocol/stdafx.h) set(STDAFX_PCH_C...定义的宏 USE_MSVC_PCH(Proxy stdafx.h ${STDAFX_PCH_C}) endif () 好了,使用上面的方法就可以给vs的工程添加预编译头文件的支持了。
,而在linux和常规的makefile风格也打不一致,文件太多,不方便学习研究。 ...不够经过这段时间系统的研究,觉得cmake还是非常强大的,吃透之后它的确非常方便,比手工写makefile要简单的多,因此在linux使用cmake我觉得是非常合适的,不过在windows则相对要差一些...{PCH_DIR}/${PCH_NAME}.pch) ENDIF(MSVC) ENDMACRO(USE_MSVC_PCH) 需要注意的是,PCH_HEADER_FILE (stdafx.h)...}/build/) # 预编译头文件和源文件的路径 set(STDAFX_PCH_H ${CMAKE_SOURCE_DIR}/Protocol/stdafx.h) set(STDAFX_PCH_C...定义的宏 USE_MSVC_PCH(Proxy stdafx.h ${STDAFX_PCH_C}) endif () 好了,使用上面的方法就可以给vs的工程添加预编译头文件的支持了。
httplib.h是一个只有一个头文件的C++11语言的跨平台 HTTP/HTTPS 库。 如果使用在自己的项目中,在MinGW下编译时,会报连接错误,因为找不到socket相关库。...所以在连接时需要参照httplib.h中对MSVC的库依赖,添加ws2_32,crypt32,cryptui几个库的 #ifdef _MSC_VER #pragma comment(lib, "ws2_...32.lib") #pragma comment(lib, "crypt32.lib") #pragma comment(lib, "cryptui.lib") #endif 如果你的项目是用CMake...连接库支持 $:ws2_32> $:crypt32> $:cryptui> ) # MINGW 为CMake
基本的VS测试工程 VS对Linux工程的组织有两种形式, 我们都进行简单的介绍. 1....))模式, 测试VS Project方式的Linux工程....CMake Open Folder工程组织方式 类同上面的Linux Project模式, 我们使用(VS2017->File->New->Project)菜单项来打开新建工程面板, 如上图所示, 我们创建的是一个跨平台的...首先, 我们先把CMake工程的目标平台按如下图所示的方式调整到Linux: 选择select后, 会自动创建一个”CMakeSettings.json”, 基本VS对CMake工程相关的配置都存储在该文件中...远程CMake的Build目录, 可以直接看成是生成CMake Cache Files和最终可执行程序的目录.
项目中想用google test,项目也是用cmake管理的。...于是想用cmake 添加gtest set(CMAKE_PREFIX_PATH "/path/to/gtest/install/path/cmake/path" ${CMAKE_PREFIX_PATH...Error at D:/Program Files/cmake/cmake-3.14.4-win64-x64/share/cmake-3.14/Modules/FindPackageHandleStandardArgs.cmake...于是解决办法就很清楚了,把FindGTest.cmake文件删除,使用GTest自带的cmake。 成功运行。 问题原因:可能是因为使用GTest版本比较新,cmake没有跟上步伐。...配置: set(CMAKE_CXX_FLAGS_RELEASE "/MT") set(CMAKE_CXX_FLAGS_DEBUG "/MTd") enable_testing() set(GTEST_ROOT
文章目录 一、Android NDK 构建脚本 二、CMake 构建脚本示例 三、CMake 命令手册 1、CMake 脚本命令 2、CMake 工程命令 该系列博客的应用场景是 Android Studio...上述命令都是 CMake 命令 , 可以在 CMake 命令文档中查询 , 当前 CMake 中有 47 个脚本命令 , 46 个工程命令 ; CMake 构建脚本示例 : # 指定 CMake...# CMAKE_SOURCE_DIR 指的是当前的文件地址 # -L 参数指定动态库的查找路径 #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -L${CMAKE_SOURCE_DIR...导入静态库 ( CMake 简介 | 构建脚本路径配置 | 引入静态库 | 指定静态库路径 | 链接动态库 ) 复制来的 ; 三、CMake 命令手册 ---- CMake 命令分为三种 , 脚本命令...工程命令 ---- CMake 中有 46 个工程命令 , 一般在 CMake 工程中才可以使用上述工程命令 ; 46 个工程命令如下 , 详细的命令细节参考 cmake-commands(7)
# 声明要求的cmake最低版本 cmake_minimum_required( VERSION 2.8 ) set( CMAKE_BUILD_TYPE "Debug" ) # 声明一个cmake工程...useHello hello_shared ) # 如果只添加头文件 include_directories("/usr/include/eigen3") 执行 mkdir build cd build cmake
cmake 变量定义 name=… set(name, “…”) 环境检测 find_library(lib libname pathllist) find_package(packename...target_link_libraries(myprogram path/curl.so) 使用find_package的方式 find_package(CURL REQUIRED) //通过FindCURL.cmake...${CURL_INCLUDE_DIR}) target_link_libraries(curltest ${CURL_LIBRARY}) 构建过程中生成,模块.dir和每个模块的编译文件 关联多个cmake...项目使用add_subdirectory, 子项目去掉add_subdirectory,否则出现target exsit错误 子项目去掉project项目名称,避免cmake中重复(不报错) demo
这里我们使用CMake。 在一个CMake工程中,我们会使用cmake命令生成一个Makefile文件,然后,用make命令根据这个 makefile文件的内容来编译整个工程。...) # 项目信息 project (Demo4) # 加入一个配置头文件,用于处理 CMake 对源码的设置 configure_file ( "${PROJECT_SOURCE_DIR}/config.h.in...,这个文件由 CMake 从 config.h.in 生成,通过这样的机制,将可以通过预定义一些参数和变量来控制代码的生成。...文件 上面的程序值得注意的是第2行,这里引用了一个 config.h 文件,这个文件预定义了 USE_MYMATH 的值。...但我们并不直接编写这个文件,为了方便从 CMakeLists.txt 中导入配置,我们编写一个 config.h.in文件,内容如下: #cmakedefine USE_MYMATH 这样 CMake
2、cmake指令不区分大小写。本文为了醒目,笔者把cmake指令都作大写处理。...具体原因见后文外部编译部分; CMAKE_INCLUDE_PATH:环境变量,非cmake变量; CMAKE_LIBRARY_PATH:环境变量; CMAKE_CURRENT_SOURCE_DIR:当前处理的...系统信息预定义变量 CMAKE_MAJOR_VERSION cmake主版本号,如2.8.6中的2 CMAKE_MINOR_VERSION cmake次版本号,如2.8.6中的8 CMAKE_PATCH_VERSION...cmake补丁等级,如2.8.6中的6 CMAKE_SYSTEM 系统名称,例如Linux-2.6.22 CMAKE_SYSTEM_NAME 不包含版本的系统名,如Linux CMAKE_SYSTEM_VERSION...CMAKE_C_FLAGS 设置C编译选项 CMAKE_CXX_FLAGS 设置C++编译选项 二. CMake常用语法 1.
}/Table.h COMMAND MakeTable ${CMAKE_CURRENT_BINARY_DIR}/Table.h DEPENDS MakeTable ) # add the...} ) # add the main library add_library(MathFunctions mysqrt.cxx ${CMAKE_CURRENT_BINARY_DIR}/Table.h...Next we have to let CMake know that mysqrt.cxx depends on the generated file Table.h....}/Table.h DEPENDS MakeTable COMMAND MakeTable ${CMAKE_CURRENT_BINARY_DIR}/Table.h ) # add the binary...} ) # add the main library add_library(MathFunctions mysqrt.cxx ${CMAKE_CURRENT_BINARY_DIR}/Table.h
一、cmake整体思路 根据cmake编写命令(CMakeLists.txt),生成对应的makefile文件(Makefile)。.../可执行文件 #运行可执行文件 CMakeLists.txt通用设置: (1)cmake版本号 (2)工程名称 # $ cmake --version cmake_minimum_required...PUBLIC参数 https://zhuanlan.zhihu.com/p/82244559 问题2: 静态库与头文件的关系 将源文件编译成为静态库之后, 静态库文件相当于将函数接口留在了头文件head.h中...因此最后只需要将main.c、head.h和库文件给用户即可。...问题3:静态库与动态库的区别 头文件stdio.h,其对应的是printf函数的声明,其库文件是printf函数实现的库文件,该库文件有C提供,它们是标准头、库文件,因此不需要指明路径和名称,且该库函数为动态库函数
下载cmake原版本cmake源码下载:https://cmake.org/download/下载后上传到Linux主机在本地上传文件到Linux主机,可以通过使用lrzsz关于如何上传本地文件到Linux...主机,可以参考如下文章:关于如何上传本地文件到Linux主机# 找到源码目录# 解压cmake[root@localhost ~]# tar -xvzf cmake-3.30.0.tar.gz# 进入解压后的目录.../bootstrap# 编译[root@localhost cmake-3.30.0]# make -j4# 安装[root@localhost cmake-3.30.0]# make install#...安装完成后编辑root的~/.bashrc文件[root@localhost ~]# vi ~/.bashrc# 在文件最后添加一行代码alias cmake="/usr/local/bin/cmake...3.30.0CMake suite maintained and supported by Kitware (kitware.com/cmake).
CMake学习笔记(一)——CMake官网教程 前言: 经历了一星期痛苦的交叉编译,笔者深刻认知到Linux下make的重要性。...给自己设置的第一课,就是先学习一下CMake官网提供的入门教程。 CMake官网教程地址:https://cmake.org/cmake-tutorial/ 一. 基本开始 1....在CMake中,大小写、甚至大小写混合的命令都是被支持的。...h> #include h> #include "TutorialConfig.h" #ifdef USE_MYMATH #include "MathFunctions.h...其中,CMake变量CMAKE_INSTALL_PREFIX被用来定义安装文件的根目录。 添加测试也是一个简单直接的操作。
: |-- tutorial_fourth/ |-- src/ |-- tutorial.cpp |-- include/ |--TutorialConfig.h.in...|-- mathlib/ |-- CMakeLists.txt |-- mathlib.h |-- mathlib.cpp |-- CMakeLists.txt..."Use tutorial provided math implementation" ON) # 指定版本号的配置文件 configure_file(include/TutorialConfig.h.in...CMAKE_INSTALL_PREFIX的include文件中 install(FILES "${PROJECT_BINARY_DIR}/TutorialConfig.h" DESTINATION...的lib文件夹中 install(TARGETS mathlib DESTINATION lib) # 将文件mathlib.h输出到安装目录 CMAKE_INSTALL_PREFIX下的include
有时候,也会用到一个非常有用的变量CMAKE_INSTALL_PREFIX,用于指定cmake install时的相对地址前缀。...其中,不同的TYPE,cmake也提供了默认的安装路径,如下表: TYPE类型 安装目录变量 默认安装文件夹 BIN ${CMAKE_INSTALL_BINDIR} bin SBIN ${CMAKE_INSTALL_SBINDIR...${CMAKE_INSTALL_RUNSTATEDIR} /run DATA ${CMAKE_INSTALL_DATADIR} INFO ${CMAKE_INSTALL_INFODIR} /info...LOCALE ${CMAKE_INSTALL_LOCALEDIR} /locale MAN ${CMAKE_INSTALL_MANDIR} /man DOC ${CMAKE_INSTALL_DOCDIR...SCRIPT参数将在安装过程中调用给定的CMake脚本文件(即.cmake脚本文件),如果脚本文件名是相对路径,则将相对于当前源目录进行解释。CODE参数将在安装过程中调用给定的CMake代码。
领取专属 10元无门槛券
手把手带您无忧上云