Linux【8】-软件管理-1-7-CMake

CMake是一个比make更高级的编译配置工具,它可以根据不同平台、不同的编译器,生成相应的Makefile或者vcproj项目。

通过编写CMakeLists.txt,可以控制生成的Makefile,从而控制编译过程。CMake自动生成的Makefile不仅可以通过make命令构建项目生成目标文件,还支持安装(make install)、测试安装的程序是否能正确执行(make test,或者ctest)、生成当前平台的安装包(make package)、生成源码包(make package_source)、产生Dashboard显示数据并上传等高级功能,只要在CMakeLists.txt中简单配置,就可以完成很多复杂的功能,包括写测试用例。

一、安装

https://cmake.org/download/ ,找到最新版本的位置。一般开放源代码软件都会有两个版本发布:

  • Source Distribution 前者是源代码版,你需要自己编译成可执行软件
  • Binary Distribution 后者是已经编译好的可执行版,直接可以拿来用的。

查询主机32位或64位

getconf LONG_BIT

如果结果是64表示该系统是linux64位的,如果结果是32则表示系统是linux32位。

安装:

tar -xvf cmake-3.14.5.tar
cd cmake-3.14.5
./bootstrap 
make
make install
cmake 会默认安装在 /usr/local/bin 下面

查询cmake –version

cmake version 3.14.5

三、讨论

3.1 CMake 指定安装目录

方法1:

cmake -DCMAKE_INSTALL_PREFIX=/usr ..

方法二:

修改cmake文件,加入:

SET(CMAKE_INSTALL_PREFIX < install_path >)

要加在 PROJECT(< project_name>) 之后。

默认安装路径:

cmake . 
make 
make install 

默认会安装到:

1).h文件: /usr/local/include/vid.stab 
2).so文件: /usr/local/lib/libvidstab.so

四、报错

4.1 centos7.4 安装cmake could not find CMAKE_ROOT

cd /usr/local/

tar -zxv -f cmake-3.13.0-rc2.tar.gz
cd cmake-3.13.0-rc2
./configure

make
make install

CMake Error: Could not find CMAKE_ROOT !!!

办法1:

hash -r

办法2:

./bootstrap --prefix=/usr
gmake

gmake install

4.2 Could not find OpenSSL. Install an OpenSSL development package or configure CMake with -DCMAKE_US

安装cmake时,运行

./configure

报错:

g++ has <ext/stdio_filebuf.h>
---------------------------------------------
gmake: `cmake' is up to date.
loading initial cache file /usr/local/cmake-3.17.0-rc2/Bootstrap.cmk/InitialCacheFlags.cmake
-- Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY OPENSSL_INCLUDE_DIR) 
CMake Error at Utilities/cmcurl/CMakeLists.txt:454 (message):
  Could not find OpenSSL.  Install an OpenSSL development package or
  configure CMake with -DCMAKE_USE_OPENSSL=OFF to build without OpenSSL.


-- Configuring incomplete, errors occurred!
See also "/usr/local/cmake-3.17.0-rc2/CMakeFiles/CMakeOutput.log".
See also "/usr/local/cmake-3.17.0-rc2/CMakeFiles/CMakeError.log".
---------------------------------------------
Error when bootstrapping CMake:
Problem while running initial CMake
---------------------------------------------

解决

rm -f CMakeCache.txt
yum -y install ncurses-devel
yum install openssl-devel
药企,独角兽,苏州。团队长期招人,感兴趣的都可以发邮件聊聊:tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn