在c语⾔中make的⽤法,cmake使⽤⽅法详解
CMake是⼀个跨平台的安装(编译)⼯具,可以⽤简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project ⽂件,能测试编译器所⽀持的C++特性,类似UNIX下的automake。
CMake 使⽤⽅法
CMake的所有的语句都写在⼀个叫:的⽂件中。当⽂件确定后,可以⽤ccmake命令对相关 的变量值进⾏配置。这个命令必须指向所在的⽬录。配置完成之后,应⽤cmake命令⽣成相应的makefile(在Unix like系统下)或者 project ⽂件(指定⽤window下的相应编程⼯具编译时)。
其基本操作流程为:
$> ccmake directory
$> cmake directory
$> make
其中directory为所在⽬录;
第⼀条语句⽤于配置编译选项,如VTK_DIR⽬录 ,⼀般这⼀步不需要配置,直接执⾏第⼆条语句即可,但当出现错误时,这⾥就需要认为配置了,这⼀步才真正派上⽤场;
第⼆条命令⽤于根据⽣成Makefile⽂件;
第三条命令⽤于执⾏Makefile⽂件,编译程序,⽣成可执⾏⽂件;
CMake的执⾏就是这么简单,其难点在于如何编写⽂件,下⾯结合例⼦简单介绍的编写,看下⾯这个
#project name
PROJECT
(test_math
)
#head file path
INCLUDE_DIRECTORIES
(
include
)
#source directory
AUX_SOURCE_DIRECTORY
(src DIR_SRCS
)
#set environment variable
SET
cmake如何使用
(TEST_MATH
}
)
#set extern libraries
SET
(LIBRARIES
libm.
so
)
#add executable file
ADD_EXECUTABLE
(../bin/bin $
{TEST_MATH
}
)
#add link library
TARGET_LINK_LIBRARIES (../bin/bin $
{LIBRARIES
}
)
或者⽤下⾯这个 #project name
PROJECT
(test_math
)
#head file path
INCLUDE_DIRECTORIES
(
include
)
#source directory
AUX_SOURCE_DIRECTORY
#set environment variable
SET
(TEST_MATH
$
{DIR_SRCS
}
)
#add executable file
ADD_EXECUTABLE
(../bin/bin $
{TEST_MATH
}
)
#add link library
TARGET_LINK_LIBRARIES
(../bin/bin
m
)
这是⼀个测试数学函数的程序的,"#"后⾯为注释的内容,CMake的命令全部为⼤写
第2⾏指定⽣成的⼯程名为test_math
第4⾏指定头⽂件⽬录为include
第8⾏指定源⽂件⽬录为src,并将其赋值给环境变量DIR_SRCS
第10⾏设定环境变量TEST_MATH的值为环境变量DIR_SRCS的值,此处⽤于显⽰如何⽤环境变量对环境变量进⾏赋值第14⾏将数学函数库赋值给环境变量LIBRARIES,当然,可以不⽤这个环境变量,⽽在后⾯直接使⽤该库名
第18⾏⽤于指定⽣成⽂件,将环境变量TEST_MATH⽬录下的所有⽂件编译⽣成../bin⽬录下的可执⾏⽂件bin
第20⾏指定../bin/bin执⾏时的链接库为环境变量LIBRARIES的值-libm.so
下⾯给出源⽂件
/src/main.c:
#include
#include"../include/a.h"
int main
(
double b=
25.0;
double a=
0.0;
a=get_sqrt
(b
);
printf
(
"a is %lf, b is %lf\n",a,b
);
return
0;
}
/src/a.c
#include"../include/a.h"
double get_sqrt
(
double var1
)
{
return sqrt
(var1
);
}
/include/a.h
#ifndef  A_FILE_HEADER_INC #define  A_FILE_HEADER_INC #include
double get_sqrt
(
double var1
将放在当前⽬录下,执⾏
$> cmake .
$> make
即可⽣成可执⾏⽂件,在⽬录/bin下的bin⽂件,好了运⾏看其效果是否和所想⼀样。
====================
补充:
⼀、      基本使⽤
安装:下载⼆进制包后可直接解压使⽤
从源码安装则执⾏命令:./bootstrap; make; make install——尝试执⾏bootstrap失败
使⽤:cmake dir_path,⽣成⼯程⽂件或makefile⽂件
⼆、      概念
out-of-source build,与in-source build相对,即将编译输出⽂件与源⽂件放到不同⽬录中;
三、      基本结构
1,依赖⽂件,项⽬主⽬标⼀个,主⽬录中可指定包含的⼦⽬录;
2,在项⽬中使⽤project指定项⽬名称,add_subdirectory添加⼦⽬录
3,⼦⽬录将从⽗⽬录继承设置(TBD,待检验)
四、      语法
1.      #注释
2.      变量:使⽤set命令显式定义及赋值,在⾮if语句中,使⽤${}引⽤,if中直接使⽤变量名引⽤;后续的set命令会清理变量原来的值;
3.      command (args ...)  #命令不分⼤⼩写,参数使⽤空格分隔,使⽤双引号引起参数中空格
4.      set(var a;b;c) <=> set(var a b c)  #定义变量var并赋值为a;b;c这样⼀个string list
5.      Add_executable(${var}) <=> Add_executable(a b c)  #变量使⽤${xxx}引⽤
6.      条件语句:
if(var) #var ⾮empty 0 N No #⾮运算使⽤NOT
else()/elseif() … endif(var)
7.      循环语句
Set(VAR a b c)
Foreach(f ${VAR})      …Endforeach(f)
8.      循环语句
WHILE() … ENDWHILE()
五、      内部变量

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。