cmake编译工程实例

麻雀虽小,五脏俱全:

       工程目录:

      

下面是具体文件内容:

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

      运行结果,这里直接通过脚本顺序执行:

     

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值