如下,prj是空文件夹;

CMake aux_source_directory 学习-LMLPHP

add.h;

#include <iostream>

using namespace std;
 
int add1(int a, int b);

num.h;

int num1=100;
int num2=301;

 add.cpp;

#include "add.h"
 
int add1(int i, int j)
{
    return i + j;
}

main.cpp;

#include <conio.h>
#include "add.h"
#include "num.h"
 
int main()
{
    cout << add1(num1, num2) << endl;
    getch();
    return 0;
}

 CMakeLists.txt如下;

cmake_minimum_required(VERSION 3.10)
project(myadd VERSION 1.0)
aux_source_directory(. ALL_SRCS)
add_executable(myadd ${ALL_SRCS})

project指令,之前只是指定了项目名,这次也指定了项目版本,生成的项目的版本;

aux_source_directory指令,

    aux_source_directory(< dir > < variable >)
   搜集所有在指定路径下的源文件的文件名,将输出结果列表储存在指定的变量中。 

    就是把一个文件夹下的全部源文件的文件名,存到一个变量中;

    aux_source_directory(. ALL_SRCS),这是把当前目录下的所有源文件名存入变量ALL_SRCS;点应该是代表所有的文件名;

cmake语法中,${变量名} 这是引用变量的语法;

add_executable(myadd ${ALL_SRCS}),这样就把全部文件名加入myadd项目;

然后进行cmake;

CMake aux_source_directory 学习-LMLPHP 

红的先不管;

CMake aux_source_directory 学习-LMLPHP 

done了以后看一下生成了解决方案;

CMake aux_source_directory 学习-LMLPHP 

从VS2015打开生成的sln,像前文删除多余的;

CMake aux_source_directory 学习-LMLPHP 

    看一下都有了;但是这次不知道为什么自己的两个头文件是在外部依赖项中,之前是单独有一个头文件的文件夹;从效果来说是一样的;

运行一下;自己的四个文件都包含进来了;结果如下;

CMake aux_source_directory 学习-LMLPHP 

10-28 05:17