CMakeLists简介
工程项目文件管理工具,在make的基础上进一步封装,避免了程序员手动编写makefile的过程,由其辅助产生
例子1
新建main.cpp
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
srand(time(0));
while(1)
{
printf("%d\n",rand()%100 + 1);
sleep(1);
}
return 0;
}
新建CMakeLists文件
cmake_minimum_required( VERSION 2.0 )
project( helloMain )
add_executable( helloMain main.cpp )
若在当前路径在执行cmake .
,接着执行make .
即可生成二进制可执行程序hellomain,但cmake生成的中间文件很多,会“污染”工程代码文件。
这时候,mkdir build
cd build
,cmake ..
,这样中间文件即生成在build文件下,原工程目录没有被污染
例子2
在项目开发中,经常要引用别的库文件(.lib .a
),可能是自己封装的写在另一个cpp中build生成.o
; 也可能是现有的库如gl.lib
等。
情况1-自己封装
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <unistd.h>
#include "hello.h"
int main()
{
srand(time(0));
while(1)
{
printf("%d\n",rand()%100 + 1);
printHello();//此函数在hello.cpp中实现
sleep(1);
}
return 0;
}
#include <iostream>
using namespace std;
void printHello()
{
cout << "print hello"<<endl;
}
此时CMakeLists应当这样写
cmake_minimum_required( VERSION 2.0 )
project( helloMain )
add_library(hello hello.cpp)#由hello.cpp build生成hello.o,link生成libhello.a
add_executable( hellomain main.cpp )
target_link_libraries( hellomain hello )#hellomain链接找到libhello.a最终生成可执行二进制文件