cmake入门实战基础

本文介绍了一个项目实例的CMake配置,包括项目目录结构、库的组织和外部依赖的管理。通过CMakeLists.txt文件,详细展示了如何编译内部库和链接外部库,以及主函数的实现。
摘要由CSDN通过智能技术生成

项目实例目录结构:主要实现了包含了项目内部生成的库,同时又依赖了外部三方的库。

├── bin
│   └── demo_cmake
├── build
├── CMakeLists.txt
├── inc
│   └── MathCommon.h
├── lib
│   ├── libMathCommon.so
│   └── libMathFunctions.a
├── lib_extern
│   ├── build
│   ├── CMakeLists.txt
│   ├── MathCommon.cpp
│   └── MathCommon.h
├── lib_inner
│   ├── CMakeLists.txt
│   ├── MathFunctions.cpp
│   └── MathFunctions.h
├── main.cpp
├── Untils.cpp
└── Untils.h


主目录下的CMakeLists.txt内容:

#cmake最低版本要求
cmake_minimum_required(VERSION 2.8)

#项目名称
project(demo_cmake)

#项目默认的执行文件目录和源代码目录
message(STATUS ${CMAKE_BINARY_DIR})
message(STATUS ${CMAKE_SOURCE_DIR})

message(STATUS ${PROJECT_BINARY_DIR})
message(STATUS ${PROJECT_SOURCE_DIR})

#set(CMAKE_BUILD_TYPE "Debug")
#set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb")
#set(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")

#设置库输出目录
set(LIBRARY_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/lib)

#设置可执行文件输出目录
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/bin)

#头文件目录
#指定头文件的搜索路径,相当于指定gcc的-I参数
include_directories(${CMAKE_SOURCE_DIR}/inc)

#链接库目录
#动态链接库或静态链接库的搜索路径,相当于gcc的-L参数
link_directories(${CMAKE_SOURCE_DIR}/lib)

#查找目录下所有的源文件并保存在变量SRC_DIR中
aux_source_directory(. SRC_DIR)
message(STATUS ${SRC_DIR})

#包含子目录
add_subdirectory(lib_inner)

#编译可执行程序
#add_executable(demo main.cpp Common.cpp)
add_executable(demo_cmake ${SRC_DIR})

#添加链接库,相同于指定-l参数
target_link_libraries(demo_cmake MathFunctions MathCommon)

项目内部生成库CMakeLists.txt:

aux_source_directory(. LIB_SRC_DIR)

add_library(MathFunctions STATIC ${LIB_SRC_DIR})

#add_library(MathFunctions SHARED ${LIB_SRC_DIR})

项目外部生成库CMakeLists.txt:

cmake_minimum_required(VERSION 2.8)


aux_source_directory(. SO_EXTERN_DIR)


add_library(MathCommon SHARED ${SO_EXTERN_DIR})

主目录main函数代码:

  1 #include<stdio.h>
  2 
  3 #include"Untils.h"
  4 
  5 #include"lib_inner/MathFunctions.h"
  6 
  7 #include"MathCommon.h"
  8 
  9 int main()
 10 {
 11         printf("this is a cmake demo test.\n");
 12 
 13         printf_extern_lib();
 14 
 15         printf_inner_lib();
 16 
 17         printf_untils();
 18 
 19         return 0;
 20 }

 

Stkcd [股票代码] ShortName [股票简称] Accper [统计截止日期] Typrep [报表类型编码] Indcd [行业代码] Indnme [行业名称] Source [公告来源] F060101B [净利润现金净含量] F060101C [净利润现金净含量TTM] F060201B [营业收入现金含量] F060201C [营业收入现金含量TTM] F060301B [营业收入现金净含量] F060301C [营业收入现金净含量TTM] F060401B [营业利润现金净含量] F060401C [营业利润现金净含量TTM] F060901B [筹资活动债权人现金净流量] F060901C [筹资活动债权人现金净流量TTM] F061001B [筹资活动股东现金净流量] F061001C [筹资活动股东现金净流量TTM] F061201B [折旧摊销] F061201C [折旧摊销TTM] F061301B [公司现金流1] F061302B [公司现金流2] F061301C [公司现金流TTM1] F061302C [公司现金流TTM2] F061401B [股权现金流1] F061402B [股权现金流2] F061401C [股权现金流TTM1] F061402C [股权现金流TTM2] F061501B [公司自由现金流(原有)] F061601B [股权自由现金流(原有)] F061701B [全部现金回收率] F061801B [营运指数] F061901B [资本支出与折旧摊销比] F062001B [现金适合比率] F062101B [现金再投资比率] F062201B [现金满足投资比率] F062301B [股权自由现金流] F062401B [企业自由现金流] Indcd1 [行业代码1] Indnme1 [行业名称1] 季度数据,所有沪深北上市公司的 分别包含excel、dta数据文件格式及其说明,便于不同软件工具对数据的分析应用 数据来源:基于上市公司年报及公告数据整理,或相关证券交易所、各部委、省、市数据 数据范围:基于沪深北证上市公司 A股(主板、中小企业板、创业板、科创板等)数据整理计算
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值