当前位置: 首页 > 软件教程 >  Cmake怎么使用?Cmake使用教程

Cmake怎么使用?Cmake使用教程

来源:欧普软件园
|
更新:2017-02-20 18:17

CMake可以编译源代码、制作程式库、产生适配器(wrapper)、还可以用任意的顺序建构执行档。那么问题来了,Cmake具体的使用方法是什么呢?通过下文一起来学习一下吧。

Cmake使用教程

一、HelloWorld

首先创建一个test1文件夹,里面创建一个main.c文件,内容如下:

#include

int main()

{

printf("Hello World!\n");

return 0;

}

再创建一个CMakeLists.txt

PROJECT (HELLO)

SET(SRC_LIST main.c)

ADD_EXECUTABLE(hello ${SRC_LIST})

第一行:设置项目名称;

第二行:将SRC_LIST值设置为main.c

第三行:生成可执行文件 hello。 ${} 是引用某个值。

Terminal中cd进入到test1目录,创建一个build目录用于外部构建(编译所产生的文件都生成在build目录),依次执行下面三条命令:

cmake ..

make

./hello

得到的结果如下:

Cmake怎么使用?Cmake使用教程

如果要引用内部库的话,比如是关于SDL和opengl的程序,需要在CMakeLists.txt中添加

TARGET_LINK_LIBRARIES(hello SDL)

TARGET_LINK_LIBRARIES(hello GLU)

对应终端的编译命令就是:

-lSDL -lGLU

若不是引用内部库,则需要将相应目录添加进来,用到的是INCLUDE_DIRECTORIES命令。

二、库的构建与安装

这次我们的目标是:

1,建立一个静态库和动态库,提供 HelloFunc 函数供其他程序编程使用,HelloFunc 向终端输出

Hello World 字符串。

2,安装头文件与共享库。

目录安排如下:

Cmake怎么使用?Cmake使用教程

build-用于外部编译;

libhello-hello库的源文件;

src-主程序

首先看libhello里的文件:

/*filename:hello.h*/

#ifndef DBZHANG_HELLO_

#define DBZHANG_HELLO_

void hello(const char* name);

#endif //DBZHANG_HELLO_

/*filename:hello.c*/

#include

#include "hello.h"

void hello(const char * name)

{

printf ("Hello %s!\n", name);

}

CMakeLists.txt

cmake_minimum_required(VERSION 2.8)

set(LIB_SRC hello.c)

add_library(libhello STATIC ${LIB_SRC})

set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)

set_target_properties(libhello PROPERTIES OUTPUT_NAME "hello")

install(TARGETS libhello

LIBRARY DESTINATION lib

ARCHIVE DESTINATION lib)

install(FILES hello.h DESTINATION include/hello)

src文件夹

/*filename:main.c*/

#include "hello.h"

int main()

{

hello("Jack");

return 0;

}

CMakeLists.txt

cmake_minimum_required(VERSION 2.8)

include_directories(${PROJECT_SOURCE_DIR}/libhello)

set(APP_SRC main.c)

set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)

add_executable(main ${APP_SRC})

target_link_libraries(main libhello)

最外面的CMakeLists.txt

project(HELLO)

add_subdirectory(src)

add_subdirectory(libhello)

解释:

除build目录外每一个目录都要建立一个CMakeLists.txt.

生成库的语句:add_library(libhello STATIC ${LIB_SRC})

这条语句是建立静态库,若要建立动态库的话将STATIC改成SHARED.

install命令负责库的安装。

make一下,结果就像这样:

Cmake怎么使用?Cmake使用教程

再sudo make install.

Cmake怎么使用?Cmake使用教程

安装好库之后,我们在想使用hello方法的时候,只要添加头文件#include就可以了,编译的时候

g++ main .c -o main -lhello

就可以引用我们编译好的库了。

免责声明:文中图文均来自网络,如有侵权请联系删除。

欧普软件发布此文仅为传递信息,不代表欧普软件认同其观点或证实其描述。

热门文章
最近更新