此测试程序,测试的目的是用Cmake 给一个源文件存在多个,多级目录的工程编写CMakeLists.txt脚本。
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 …/
工程下载路径:https://download.csdn.net/download/weixin_40026739/37236429