工程目录:
下面是具体文件内容:
1、根目录下得CMakeLists.txt
cmake_minimum_required(VERSION 2.5)
project(MyTest)
set(top_dir ${PROJECT_SOURCE_DIR})
set(head_dir ${top_dir}/include)
set(source_dir ${top_dir}/src)
set(lib_dir ${top_dir}/lib)
set(EXECUTABLE_OUTPUT_PATH ${top_dir}/bin)
set(LIBRARY_OUTPUT_PATH ${top_dir}/lib)
link_directories(${lib_dir})
add_subdirectory(src)
add_subdirectory(lib)
2、库目录lib
CMakeLists.txt文件
add_subdirectory(LOG_C)
add_subdirectory(LOG_CPP)
add_subdirectory(LOG_SHARED)
2.1、LOG_C目录,不带头文件的源文件生成静态库
CMakeLists.txt文件
2.1.1、LOG_C的源文件目录
CMakeLists.txt文件
LOG_C.cpp文件
#include <stdio.h>
void show()
{
printf("Link Lib LOG_C success !\n");
}
2.2、LOG_CPP目录,带头文件的源文件生成静态库
CMakeLists.txt文件
2.2.1、LOG_CPP的头文件目录
LOG_CPP.h文件
#ifndef __LOG_CPP__H__
#define __LOG_CPP__H__
#include <stdio.h>
class LOG_CPP
{
public:
void show();
};
#endif//__LOG_CPP__H__
2.2.2、LOG_CPP的源文件目录
CMakeLists.txt文件
include_directories(../include)
aux_source_directory(. source_list)
add_library(LOG_CPP ${source_list})
LOG_CPP.cpp文件
#include "LOG_CPP.h"
void LOG_CPP::show()
{
printf("Link Lib LOG_CPP success !\n");
}
2.3、LOG_SHARED目录,带头文件的源文件生成动态库
CMakeLists.txt文件
2.3.1、LOG_SHARED的头文件目录
LOG_SHARED.h文件
#ifndef __LOG_SHARED__H__
#define __LOG_SHARED__H__
#include <stdio.h>
class LOG_SHARED
{
public:
void show();
};
#endif//__LOG_SHARED__H__
2.3.2、LOG_SHARED的源文件目录
CMakeLists.txt文件
include_directories(../include)
aux_source_directory(. source_list)
add_library(LOG_SHARED SHARED ${source_list})
LOG_SHARED.cpp
#include "LOG_SHARED.h"
void LOG_SHARED::show()
{
printf("Link Lib LOG_SHARED success !\n");
}
3、工程源文件目录src
CMakeLists.txt文件
set(targetName Test)
aux_source_directory(${source_dir} source_list)
add_executable(${targetName} ${source_list})
include_directories(${head_dir})
include_directories(${lib_dir}/LOG_CPP/include)
include_directories(${lib_dir}/LOG_SHARED/include)
target_link_libraries(${targetName} LOG_C LOG_CPP LOG_SHARED)
#include "CTest.h"
void CTest::show()
{
printf("Test is running ......\n");
}
#include "CTest.h"
#include "LOG_CPP.h"
#include "LOG_SHARED.h"
extern void show();
int main()
{
CTest test;
test.show();
show();
LOG_CPP log1;
log1.show();
LOG_SHARED log2;
log2.show();
return 0;
}
4、最后进入build目录,运行命令:
cmake ..
make
./bin/Test
运行结果,这里直接通过脚本顺序执行: