cmake 多级目录编译

目的:

此测试程序,测试的目的是用Cmake 给一个源文件存在多个,多级目录的工程编写CMakeLists.txt脚本。

测试工程目录结构图:

cmake 多级目录编译_第1张图片

测试程序源码:

testDir目录

testDir目录下CMakeLists.txt

cmake_minimum_required(VERSION 3.10.2)
project(TESTCMAKEDIR)
 

aux_source_directory(. DIRSRCS)

include_directories(./ ./dirA ./dirB ./dirB/dirC)

add_subdirectory(dirA)
add_subdirectory(dirB)

add_executable(TESTCMAKEDIR ${DIRSRCS})
target_link_libraries(TESTCMAKEDIR dirA dirB dirC)

testDir目录下testMutilDir.cpp

#include "dirA.h"
#include "dirb.h"
#include "dirC1.h"
#include "dirC2.h"
int main()
{
    dirA();
	dirB();
	dirC1();
    dirC2();
    return 0;
}

dirA目录
dirA目录下CMakeLists.txt

aux_source_directory(. DIRA)
add_library(dirA ${DIRA})

dirA目录下dirA.cpp

#include "dirA.h"
#include "dirb.h"
void dirA()
{
   std::cout<<"this is dirA"<<std::endl;
   dirB();
}

dirA目录下dirA.h

#ifndef __DIRA_H__
#define __DIRA_H__
#include 
void dirA();
#endif

dirB目录
dirB目录下CMakeLists.txt

aux_source_directory(. DIRB)
add_library(dirB ${DIRB})
add_subdirectory(dirC)

dirB目录下dirb.cpp

#include "dirb.h"
void dirB()
{
    std::cout<<"this is dir B"<<std::endl;
}

dirB目录下dirb.h

#ifndef __DIRB__H_
#define __DIRB__H_
#include 
void dirB();
#endif

dirC目录
dirC目录下CMakeLists.txt

aux_source_directory(. DIRC)
add_library(dirC ${DIRC})

dirC目录下dirC1.cpp

#include "dirC1.h"
void dirC1()
{
   std::cout<<"this is dirC1"<<std::endl;
}

dirC目录下dirC1.h

#ifndef __DIRC1__H_
#define __DIRC1__H_
#include 
void dirC1();
#endif

dirC目录下dirC2.cpp

#include "dirC2.h"
void dirC2()
{
   std::cout<<"this is dirC2"<<std::endl;
}

dirC目录下dirC2.h

#ifndef __DIRC2__H_
#define __DIRC2__H_
#include 
void dirC2();
#endif

编译:
进入目录build 输入cmake …/

cmake 多级目录编译_第2张图片
执行 make
cmake 多级目录编译_第3张图片
执行 ./TESTCMAKEDIR
cmake 多级目录编译_第4张图片

工程下载路径:https://download.csdn.net/download/weixin_40026739/37236429

你可能感兴趣的:(cmake,开发语言,cmake)