前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CMake 简单例子

CMake 简单例子

原创
作者头像
8菠萝
发布2022-07-07 23:03:29
7240
发布2022-07-07 23:03:29
举报
文章被收录于专栏:菠萝上市没有

背景

简单CMake 父子项目+链接外部库例子+QT

父工程

CMakeList.txt

代码语言:txt
复制
cmake_minimum_required(VERSION 3.12)
project(zd_cmake)

#set(ZDPOWER_PATH "D://test") # 设置环境变量
#include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/zdpower.cmake) # 包含其他cmake文件


# 使用add_subdirectory 添加子工程
add_subdirectory(zdstorelib)
add_subdirectory(PowerServer)

子工程

zdstorelib/CMakeList.txt

代码语言:txt
复制
project(zdstorelib)


# 引用其他cmake
include(${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/zdpower.cmake)
ZD_LIB_PROTOBUF()  # 在其他cmake中定义的函数
ZD_LIB_STORE()     # 同上



#多平台spdlog
if (WIN32)
    include_directories(${TEST}/lib/spdlog/include)
    link_directories(${TEST}/lib/spdlog)
    link_libraries(optimized spdlog debug spdlogd)
else()
    include_directories(${TEST}/lib/spdlog/include)
    link_directories(${TEST}/lib/spdlog)
    link_libraries(spdlog)
endif()

#C++17支持
if(MSVC)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++17")
elseif(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17")
endif()

include_directories(.)
include_directories(./include)

aux_source_directory(. ALL_SRC)
aux_source_directory(./include/Store STORE_SRC)

# find_package(Qt5 COMPONENTS Core REQUIRED)

# 生成可执行程序
# add_executable(${PROJECT_NAME} ${ALL_SRC} ${STORE_SRC} )
# 生成库文件
add_library(${PROJECT_NAME} STATIC ${ALL_SRC} ${STORE_SRC})
# QT支持
# target_link_libraries(${PROJECT_NAME} Qt5::Core)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 父工程
  • 子工程
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档