Linux cmake入门使用,Linux cmake入门使用

Linux  cmake guidemysql

因为调试须要所以研究了一下cmake这个夸平台的编译工具的使用方法.linux

1.本人的机器为ubuntu 10.04,在连网的状况下直接在终端输入:sql

root@zsh-linux:~#apt-get install cmake

安装完毕以后能够在/var/cache/apt/archives看到安装的.deb文件编程

或者在cmake官网下载cmake for linuxbootstrap

此时有个注意点是建议下载 cmake-2.8.4.tar.gz 而不是ubuntu

下载完成后解压函数

root@zsh-linux:/opt#tar -zxvf  cmake-2.8.4.tar.gz

而后 cd 到cmake-2.8.4目录下

root@zsh-linux:/opt/cmake-2.8.4#

root@zsh-linux:/opt/cmake-2.8.4# ./bootstrap

root@zsh-linux:/opt/cmake-2.8.4# make

root@zsh-linux:/opt/cmake-2.8.4# make install

安装完毕后查看是否安装成功:

root@zsh-linux:/opt/cmake-2.8.4# cmake --version

cmake version 2.8.4

有以上信息表示安装cmake成功。工具

2.cmake的使用ui

(1)建立一个工程目录文件夹,而后建立一个hello.c

#include

intmain()

{

printf(“hello,thisis my firstusingcmake project/n”);

return0;

}

(2)而后建立一个build目录(用于编译生成的相应文件),与hello.c目录同级

(3)编写CMakeLists.txt内容以下:(于hello.c目录同级)

cmake_minimum_required(VERSION 2.8)

PROJECT(cmake_test)

SET(SRC_LIST main.c)

INCLUDE_DIRECTORIES(/usr/include/glib)

MESSAGE(STATUS "This is BINARY dir "${HELLO_BINARY_DIR})

MESSAGE(STATUS "This is SOURCE dir "${HELLO_SOURCE_DIR})

ADD_EXECUTABLE(hello ${SRC_LIST})

(4)进入build目录输入cmake ..

root@zsh-linux:/home/cmake_test/build# cmake ..

若编译成功在build目录下会生成相应文件,其中有个makefile文件

有可能会出现问题:

CMAKE_CXX_COMPILER-NOTFOUND" was not found

解决方法:

root@zsh-linux:/home/cmake_test/build# apt-get install g++

(可选)cmake -D CMAKE_CXX_COMPLIER=”g++”CMAKE -D     CMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=”/usr/local”

(5)输入make命令执行成功后在build目录下会看到可执行的hello

(6)./hello

输出hello,this is my first usingcmake project。

注:这只适用于简单的工程,若复杂的工程项目请参考www.cmake.org

你以为makefile看着就头痛,若是当工程愈来愈大,你愈来愈手足无措,若是你厌倦了在编译的时候打上一大堆命令,那么你有必要花十分钟来看一下下面的内容。

1、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

获得的结果以下:

6c34f5d69f604732b8af5bb9.html

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

TARGET_LINK_LIBRARIES(hello SDL)

TARGET_LINK_LIBRARIES(hello GLU)

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

-lSDL -lGLU

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

2、库的构建与安装

此次咱们的目标是:

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

Hello World 字符串。

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

目录安排以下:

6c34f5d69f604732b8af5bb9.html

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一下,结果就像这样:

6c34f5d69f604732b8af5bb9.html

再sudo make install.

6c34f5d69f604732b8af5bb9.html

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

g++ main .c -o main -lhello

就能够引用咱们编译好的库了。

CMake 的详细介绍:请点这里

CMake 的下载地址:请点这里

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值