背景
对于代码工程来讲,最基本的就是由代码文件编译组成的可执行文件。对于一些简单到只有一个文件的代码工程而言,两行的CMakeLists文件就足够了。我们第一接触cmake文件,就从这里开始了。
准备
为了便于管理,还是先确定路径吧,在D盘里创建了一个叫cmake_tutorial的文件夹。在这个文件夹里,创建step1的文件夹,本篇的内容放在这个文件夹里。
文档路径
开始
- 创建一个CMakeLists.txt的文档,并填这些内容:
cmake_minimum_required(VERSION 2.6) #依赖的cmake版本
project(Tutorial) #项目名称
add_executable(Tutorial tutorial.cpp) #关联代码名称
- 对应的,添加tutorial.cpp,代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc,char *argv[])
{
if(argc < 2)
{
fprintf(stdout,"Usage:%s number\n",argv[0]);
return 1;
}
double inputValue = atof(argv[1]);
double outputValue = sqrt(inputValue);
fprintf(stdout,"The square root of %g is %g\n",
inputValue,outputValue);
return 0;
}
执行完这些以后,基本就可以利用cmake来生成代码工程了,在命令行里,切换到cmake_tutorial路径,输入这样的语句:
cmake step1
命令行里出现了这样的语句。
cmake step1 再看一下路径。 step1工程
生成了Tutorial项目工程,这样的工程可以直接在VS里面打开。
好了,基本的创建流程就是这样子,但是大部分的情况下,代码都不是一个文件可以搞定的。如何添加多个文件,这里以C++为例,添加一个包含版本信息.h头文件。
- 我们向代码工程中添加的第一个特性是为工程添加一个版本号,虽然这也可以在代码里面做,但是用cmake会更加灵活。首先,cmake文件需要改成这样:
cmake_minimum_required(VERSION 2.6) #依赖的cmake版本
project(Tutorial) #项目名称
set (Tutorial_VERSION_MAJOR 1)
set (Tutorial_VERSION_MINOR 0)
configure_file(
"${PROJECT_SOURCE_DIR}/TutorialConfig.h.in"
"${PROJECT_BINARY_DIR}/TutorialConfig.h"
)
include_directories("${PROJECT_BINARY_DIR}")
add_executable(Tutorial tutorial.cpp) #关联代码名称
- 添加一个TutorialConfig.h.in的文件
#define Tutorial_VERSION_MAJOR @Tutorial_VERSION_MAJOR@
#define Tutorial_VERSION_MINOR @Tutorial_VERSION_MINOR@
- 更新源代码
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "TutorialConfig.h"
int main(int argc,char *argv[])
{
if(argc < 2)
{
fprintf(stdout,"%s Version %d.%d\n",
argv[0],
Tutorial_VERSION_MAJOR,
Tutorial_VERSION_MINOR);
fprintf(stdout,"Usage:%s number\n",argv[0]);
return 1;
}
double inputValue = atof(argv[1]);
double outputValue = sqrt(inputValue);
fprintf(stdout,"The square root of %g is %g\n",
inputValue,outputValue);
return 0;
}
-
最后,在命令行执行cmake语句 “cmake step1” 注意cmd路径。
-
运行完成,发现文件夹更新了。
结果
- 现在,我们就可以用VS打开sln文件,进行代码编辑了。
网友评论