CMake快速使用教程 |
您所在的位置:网站首页 › cmake视频教程 › CMake快速使用教程 |
如果你觉得makefile看着就头痛,如果当工程越来越大,你越来越手足无措,如果你厌倦了在编译的时候打上一大堆命令,那么你有必要花十分钟来看一下下面的内容。 一、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 得到的结果如下: 如果要引用内部库的话,比如是关于SDL和opengl的程序,需要在CMakeLists.txt中添加 TARGET_LINK_LIBRARIES(hello SDL)TARGET_LINK_LIBRARIES(hello GLU) 对应终端的编译命令就是: -lSDL -lGLU 若不是引用内部库,则需要将相应目录添加进来,用到的是INCLUDE_DIRECTORIES命令。 二、库的构建与安装 这次我们的目标是: 1,建立一个静态库和动态库,提供 HelloFunc 函数供其他程序编程使用,HelloFunc 向终端输出 Hello World 字符串。 2,安装头文件与共享库。 目录安排如下: 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 libhelloLIBRARY DESTINATION libARCHIVE 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一下,结果就像这样: 再sudo make install. 安装好库之后,我们在想使用hello方法的时候,只要添加头文件#include就可以了,编译的时候 g++ main .c -o main -lhello 就可以引用我们编译好的库了。 Ubuntu 12.04利用CMake-2.8.10.4编译OpenCV-2.4.4 http://www.linuxidc.com/Linux/2014-04/100113.htm CMake并没有想象中好用 http://www.linuxidc.com/Linux/2014-03/98799.htm CMake 设置交叉编译环境 http://www.linuxidc.com/Linux/2014-03/98622.htm MySQL编译安装 之 CMake http://www.linuxidc.com/Linux/2013-09/90113.htm 基于CMake编译安装MySQL 5.5 http://www.linuxidc.com/Linux/2013-04/83579.htm CMake 的详细介绍:请点这里CMake 的下载地址:请点这里 本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-10/124447.htm ![]() |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |