cmake

Ling Yu
Ling Yu

ubuntu20.0等linux系统安装升级nginx

1 安装包编译安装

1.1 下载安装包

https://cmake.org/files/下载所需版本的源码。也可以使用wget下载

wget https://cmake.org/files/v3.23/cmake-3.23.1.tar.gz

解压

tar -xvzf cmake-3.23.1.tar.gz

安装必须依赖

apt install openssl
apt install libssl-dev

进入解压目录,配置成功之后显示:CMake has bootstrapped. Now run make.

./configure

编译安装

make && make install # 默认安装目录在/usr/local/bin

2. 多版本配置

通过update-alternatives建立文件关联 首先要让系统知道我们安装了多个版本的gcc

# 命令最后的 20和50是优先级,如果使用auto选择模式,系统将默认使用优先级高的
sudo update-alternatives --install /usr/bin/cmake cmake /usr/bin/cmake 20
sudo update-alternatives --install /usr/bin/cmake cmake /usr/local/bin/cmake 50

1.1 cmake构建

mkdir build && cd build # 在项目目录
cd build && cmake .. # linus
 
cd build && cmake .. -G"Ninja" # win+msys2+mingw64+ninja
cd build && cmake .. -G"MSYS Makefiles" # win+msys2+mingw64
cmake .. -G"MSYS Makefiles" -DCMAKE_EXPORT_COMPILE_COMMANDS=1

1.2 cmake安装

方法一:

cmake --build . --target install
cmake --build . --target install --config release
make install # 或者针对make构建工具

方法二:

更加优雅的方法是在cmake3.15版本往后,使用cmake --install命令:

cmake --install . --prefix "../output"

--install指定构建目录;--prefix指定安装路径,覆盖安装路径变量CMAKE_INSTALL_PREFIX。

cmake打包

要使用打包功能,需要执行include(CPack)启用相关的功能。

include(CPack)会在构建路径(Build tree)下生成两个cpack的配置文件,CPackConfig.cmake和CPackSourceConfig.cmake,其实也就对应了两个构建目标:package和package_source;

配合cpack命令,使用-G参数指定生成器,常用的有ZIP、TGZ、7Z等,可以同时指定多个,格式也是CMake语法中的列表,例如其默认值"STGZ;TGZ";--config参数可以指定打包配置文件,比如:

方法一:

cpack -G TGZ --config CPackConfig.cmake
cpack -G TGZ --config CPackSourceConfig.cmake

方法二:

当然也可以使用cmake命令:

cmake --build . --target package
cmake --build . --target package_source

方法三:

如果使用make作为构建工具,可以简单地执行:

make package
make package_source