25.2. CMake

简介:

25.2.1. helloworld

安装CMake

$ sudo yum install gcc gcc-c++
$ sudo yum install make

$ sudo yum install cmake28
$ sudo ln -s /usr/bin/cmake28 /usr/bin/cmake
$ cmake --version
cmake version 2.8.9
		

创建 CMakeLists.txt 文件

$ cat CMakeLists.txt
PROJECT(example)
ADD_EXECUTABLE(example main.c)
		

创建 main.c 文件

		
$ cat main.c
#include <stdio.h>
int main() {
   printf("helloworld!\n");
   return 0;
}
		
		

编译程序

$ cmake .
-- Configuring done
-- Generating done
-- Build files have been written to: /home/neo/example

$ make
Scanning dependencies of target example
[100%] Building C object CMakeFiles/example.dir/main.c.o
Linking C executable example
[100%] Built target example

$ ./example
helloworld!
		

25.2.2. cmake_minimum_required

cmake_minimum_required(VERSION 2.8.7)
		

25.2.3. SET

SET(CMAKE_INSTALL_PREFIX /usr/local)
		

改变 CMAKE_INSTALL_PREFIX 变量

cmake -DCMAKE_INSTALL_PREFIX=/usr ..
		

25.2.4. ADD_SUBDIRECTORY

ADD_SUBDIRECTORY(src bin)
		

25.2.5. INCLUDE_DIRECTORIES

INCLUDE_DIRECTORIES(/usr/include/xen)
		

相当于 gcc -I/usr/include/xen

25.2.6. 编译文件

25.2.6.1. ADD_EXECUTABLE 编译可执行

SET(SRC_LIST main.cc
        src/file1.c
        src/file2.c
        )

ADD_EXECUTABLE(hello ${SRC_LIST})
			

25.2.6.2. ADD_LIBRARY 编译库文件

编译 *.a 文件

$ cat  CMakeLists.txt 
cmake_minimum_required(VERSION 2.8)
PROJECT(zeromq)
ADD_LIBRARY(zeromq zeromq.c)
INCLUDE_DIRECTORIES(/usr/include/mysql)
TARGET_LINK_LIBRARIES(zeromq zmq)
			

编译共享库 *.so 文件

$ cat  CMakeLists.txt 
cmake_minimum_required(VERSION 2.8)
PROJECT(zeromq)
ADD_LIBRARY(zeromq SHARED zeromq.c)
INCLUDE_DIRECTORIES(/usr/include/mysql)
TARGET_LINK_LIBRARIES(zeromq zmq)
			

25.2.7. EXECUTABLE_OUTPUT_PATH / LIBRARY_OUTPUT_PATH

SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
		

25.2.8. TARGET_LINK_LIBRARIES

TARGET_LINK_LIBRARIES(hello log4cpp)
TARGET_LINK_LIBRARIES(hello zmq)
		

相当于 gcc -lzmq

25.2.9. INSTALL

INSTALL(PROGRAMS hello DESTINATION bin)

INSTALL(FILES COPYRIGHT README DESTINATION share/doc/hello)

INSTALL(DIRECTORY doc/ DESTINATION share/doc/hello)
		



原文出处:Netkiller 系列 手札
本文作者:陈景峯
转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。

目录
相关文章
|
2天前
|
存储 自然语言处理 Linux
CMake基础(1)初识CMake
CMake基础(1)初识CMake
13 0
|
8月前
|
C++
CMake中使用vcpkg
vcpkg是一个微软开源的C++包管理器。 在以前的开发中,如果在项目中需要使用某个开源库,例如qt,我们需要取官网下载qt的源码,然后构建得到对应的库,然后在项目中链接这个库。对于自己熟悉的库还好说,若是不熟悉的库,如何拉取源码?如何构建?如何在项目中引用?等等这些问题通常会困扰我们,然而,大多数情况下,我们只是使用这个开源库,并不需要关心这个库的构建和编译等问题。如此,在以前的开发过程中,往往会花费不少的时间在引入开源库上。 vcpkg是在背景下开发出来的,通过vcpkg,我们可以在项目中很方便的引入开源库,不用再关心拉取代码、构建开源库的这些事情。 CMake构建的项目中引入开源库
114 0
|
Linux 异构计算
|
C++
cmake安装与使用
cmake安装与使用
263 0
cmake安装与使用
|
Ubuntu
CMake
CMake
107 0
|
消息中间件 关系型数据库 C语言
|
Java Linux C语言
|
Linux 前端开发 关系型数据库
|
C语言
CMake的使用
使其生效的方法:首先cmake生成makefile,然后make edit_cache编辑编译选项;Linux下会打开一个文本框,可以更改,该完后再make生成目标文件——emacs不支持make edit_cache
1219 0

热门文章

最新文章