cmake3安装和使用

cmake3安装

add_subdirectory — CMake 3.0.2 Documentation

cmake(7):find_package命令详解_cmake find_package_翔底的博客-CSDN博客

CMake系列讲解(入门篇)1.6 基础命令CMake-include_directories()_cmake include directory-CSDN博客

echo '[group_kdesig-cmake3_EPEL]
name=Copr repo for cmake3_EPEL owned by @kdesig
baseurl=https://copr-be.cloud.fedoraproject.org/results/@kdesig/cmake3_EPEL/epel-7-$basearch/
type=rpm-md
skip_if_unavailable=True
gpgcheck=1
gpgkey=https://copr-be.cloud.fedoraproject.org/results/@kdesig/cmake3_EPEL/pubkey.gpg
repo_gpgcheck=0
enabled=1
enabled_metadata=1' >> /etc/yum.repos.d/cmake3.repo

 yum install jsoncpp -y
yum install -y cmake3
 cmake3 -v

手动安装cmake-3.17.1-Linux-x86_64.tar.gz

解压到/usr/local/cmake-3.17.1-Linux-x86_64
ln -s  /usr/local/cmake-3.17.1-Linux-x86_64/bin/cmake    /usr/local/bin/cmake

]# cmake  --version
cmake version 3.17.1

CMake suite maintained and supported by Kitware (kitware.com/cmake).
[root@localhost cmake-3.17.1-Linux-x86_64]# 

CMake学习(六) —— if 和 else

CMake学习(六) —— if 和 else_万俟淋曦的博客-CSDN博客_cmake if else

(646条消息) 让cmake显示gcc/g++的编译信息_cmake显示编译信息_Tommy_wxie的博客-CSDN博客

 让make更透明些

make顺利的执行成功了,也得到了我们期待的“hello world”。但是make的信息太简单了,感觉空落落的。以前的Makefile可都是打印出gcc 等详细编译过程的哦。

不要担心,make的时候加个参数就行了。

make VERBOSE=1

这样你就可以在编译信息里面看到你想要的详细的gcc/g++的编译参数了。比如:

[100%] Building C object CMakeFiles/hello.dir/main.c.o
/usr/bin/cc -o CMakeFiles/hello.dir/main.c.o -c /home/study/program/cmake/hello/main.c
Linking C executable hello

什么,要在make的时候写参数。太不友好了。cmake知道你懒,所以也帮你搞定了。在CMakeLists.txt里面加上这句指令就可以了。

set(CMAKE_VERBOSE_MAKEFILE ON)

cmake 添加-g 编译选项的几种方式_makefile添加编译选项-CSDN博客

第一种

修改CMakelist.txt, 添加“add_definitions("-Wall -g")”行;

第二种

 执行cmake时,添加-DCMAKE_BUILD_TYPE=Debug编译选项。

cmake -DCMAKE_BUILD_TYPE=Debug ......

建议使用第二种,可以不用改变CMakelist.txt。

cmake编译生成的makefile如何打印详细信息呢
———————————

CentOS 7 源码安装 CMake 3.15.5 最新稳定版。解决

CentOS 7 安装 CMake 3.15.5 最新稳定版 | 24K PLUS

wget https://github.com/Kitware/CMake/releases/download/v3.15.5/cmake-3.15.5.tar.gz
tar -zxf cmake-3.15.5.tar.gz
cd cmake-3.15.5
./bootstrap --prefix=/usr --datadir=share/cmake --docdir=doc/cmake && make
sudo make install
cmake --version

ubuntu 20.04安装(升级)cmake - 知乎 (zhihu.com)

sudo apt-get -y install libssl-dev
sudo ./configure
sudo make -j8 
sudo make install
cmake --version

卸载
sudo make uninstall

(525条消息) cmake笔记_cmake deprecation warning at cmakelists.txt:1 (cma_森明帮大于黑虎帮的博客-CSDN博客

现在使用cmake的项目越来越多,学习了解下。

其实,cmake和autotools正是makefile的上层工具,它们的目的正是为了产生可移植的makefile,并简化自己动手写makefile时的巨大工作量。

#CMAKE_SOURCE_DIR是cmake内置变量表示当前项目根目录

Modern CMake 简介 - 知乎

CMake

百度安全验证

CMake使用入门笔记( 1 ) BuildSystem的三个指令 --- 更新中 - error408 - 博客园

接着在同级目录下创建cmake文件 CMakeLists.txt

为了代码干净,同级目录下创建build目录,进入build目录,执行“cmake ./”命令来生成Makefile文件,接着执行命令make编译,最后build目录下生成二进制文件example_01, 执行程序可以输出打印信息。

mkdir build
cd build
cmake ../
make


-B build   -B <path-to-build> 指定Build Tree路径,不存在则创建
cmake . -Bbuild                                               

vi ./CMakeFiles/viid_server.dir/build.make

找到

/opt/rh/devtoolset-7/root/usr/bin/c++  $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/viid_server.dir/mnt/hgfs/liantong/code/nvr-server/03-server/xxxxx/source/xxxxx.cpp.o -c /mnt/hgfs/liantong/code/nvr-server/03-server/xxxxx/source/xxxx.cpp
./CMakeFiles/viid_server.dir/flags.make:CXX_INCLUDES = -

./CMakeFiles/viid_server.dir/DependInfo.cmake:  "../../../../common_tool/plan/plan"

排错

CmakeLists编写

Cmake知识----编写CMakeLists.txt文件编译C/C++程序 - horsetail - 博客园

CMakeLists编写_lanlian7的博客-CSDN博客_cmakelist怎么写

C++ 项目 使用 CMAKE 和 GOOGLE TEST(傻瓜式教程)

C++ 项目 使用 CMake 和 Google Test(傻瓜式教程) - 灰信网(软件开发博客聚合)

./CMakeFiles/xxxxx.dir/link.txt:目录里查找  使用到的lxxx库

vim ./CMakeFiles/xxxxx.dir/depend.make   查找依赖的头文件

t.dir/depend.make:CMakeFiles/secret.dir/mnt/hgfs/liantong/code/nvr-server/03-server/common_tool/secret/source/secret.cpp.o: ../../include/secret.h
./CMakeFiles/secret.dir/DependInfo.cmake:# The include file search paths:
./CMakeFiles/secret.dir/DependInfo.cmake:  "../../include"
./CMakeFiles/secret.dir/DependInfo.cmake:  "../../../../../01-common/include/system"
./CMakeFiles/secret.dir/DependInfo.cmake:  "../../../../../01-common/include/cbb"
./CMakeFiles/secret.dir/DependInfo.cmake:  "../../../base/include"
./CMakeFiles/secret.dir/flags.make:CXX_INCLUDES = -I/mnt/hgfs/liantong/code/nvr-server/03-server/common_tool/secret/prj_linux/../include -I/mnt/hgfs/liantong/code/nvr-server/03-server/common_tool/secret/prj_linux/../../../../01-common/include/system -I/mnt/hgfs/liantong/code/nvr-server/03-server/common_tool/secret/prj_linux/../../../../01-common/include/cbb -I/mnt/hgfs/liantong/code/nvr-server/03-server/common_tool/secret/prj_linux/../../base/include 
[root@localhost build]# vim ./CMakeFiles/secret.dir/build.make
[root@localhost build]# 

查找宏定义

g]# grep  USE_CUT_FRAME ./  -rs
./CMakeCache.txt:USE_CUT_FRAME:UNINITIALIZED=true
./CMakeFiles/gbplat.dir/DependInfo.cmake:  "USE_CUT_FRAME"
./CMakeFiles/gbplat.dir/flags.make:CXX_DEFINES = -DCROW_CHANGE -DUSE_CUT_FRAME -D_DEBUG -D_LINUX_
[root@localhost build-debug]# 
 

.o: undefined reference to symbol 'pthread_rwlock_destroy@@GLIBC_2.2.5'

添加-lpthread

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread -Wall")

指定输出路径
set(EXECUTABLE_OUTPUT_PATH ${CURDIR})
#set(EXECUTABLE_OUTPUT_PATH ${CURDIR}/../../)


cmake添加相对路径
GET_FILENAME_COMPONENT(PARENT_DIR ${PROJECT_SOURCE_DIR} DIRECTORY)
 

cmake之 ADD_LIBRARY()

cmake之 ADD_LIBRARY()_ve2102388688的博客-CSDN博客_add_library

SET(LIBHELLO_SRC hello.c)
ADD_LIBRARY(hello SHARED ${LIBHELLO_SRC})
ADD_LIBRARY(hello_static STATIC ${LIBHELLO_SRC})

多目录工程的CmakeLists.txt编写(自动添加多目录下的文件)

https://lightsail.blog.csdn.net/article/details/70313350

cmake学习3--多个目录 多个源文件_南山二毛的博客-CSDN博客

CMake--List用法

CMake--List用法 - narjaja - 博客园

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值