当前位置: 首页 > news >正文

[工程构建] 使用 pkg-config 的 cmake 模板

可执行文件

# 1) cmake basic
cmake_minimum_required(VERSION 3.12) #cmake version check
set(CXX_STANDARD 17) #c++ standard version)# 2) project info
#auto generated variables as below:
#PROJECT_NAME: "hello"
#hello_BINARY_DIR: build root dir
#hello_SOURCE_DIR: source root dir
project(hello LANGUAGES C CXX)  #project name
message("build root dir: ${hello_BINARY_DIR}")
message("source root dir: ${hello_SOURCE_DIR}")# 3) specify source files and create target
#SOURCE_FILES: all c cpp and hpp as source file
file(GLOB_RECURSE SOURCE_FILES  #glob all source files(c cpp hpp , h is excluded)${hello_SOURCE_DIR}/*.c${hello_SOURCE_DIR}/*.cpp${hello_SOURCE_DIR}/*.hpp
)
list(FILTER SOURCE_FILES EXCLUDE REGEX "CMakeFiles/*")   #exclude cmake files from source list
message("source files: ${SOURCE_FILES}")
add_executable(${PROJECT_NAME} ${SOURCE_FILES}) #add executable file# 4) package dependency (pkg-config)
find_package(PkgConfig REQUIRED)#GTK_INCLUDE_DIRS : HEADER SERARCH PATHS
#GTK_LIBRARIES : LIBRARY NAME
#GTK_LIBRARY_DIRS : LIBRARY PATHS
pkg_check_modules(GTK REQUIRED gtk+-3.0)# 5) include and link
include_directories(                    #head search path${GTK_INCLUDE_DIRS}
)
link_directories(                      #library search path ${GTK_LIBRARY_DIRS}
)
target_link_libraries(${PROJECT_NAME}   #what libraries needs to link${GTK_LIBRARIES}
)# 6) ADD_DEFINITIONS
ADD_DEFINITIONS(-D LINUX)# 7) install
#install ${PROJECT_NAME} to ~/bin
set(INSTALL_PATH ~/bin)
install(TARGETS ${PROJECT_NAME} DESTINATION ${INSTALL_PATH}
)
#install config file to ~/bin
set(INSTALL_PATH ~/bin)
file(GLOB_RECURSE CONFIG_FILES ${hello_SOURCE_DIR}/*.ui${hello_SOURCE_DIR}/*.ini${hello_SOURCE_DIR}/*.conf
)
install(FILES ${CONFIG_FILES}DESTINATION ${INSTALL_PATH}
)



动态库

http://www.lryc.cn/news/459108.html

相关文章:

  • MATLAB 注释快捷键
  • 8.优化存储过程的性能(8/10)
  • Django发送邮件代理服务器配置
  • uniapp__微信小程序使用秋云ucharts折线图双轴
  • 云原生运维 - 旅程(简约版)
  • 2014年国赛高教杯数学建模B题创意平板折叠桌解题全过程文档及程序
  • PyCharm打开及配置现有工程(详细图解)
  • CSP-J
  • Linux系统:Linux中ln命令用法
  • 在SpringBoot+VUE中 实现登录-RSA的加密解密
  • 基于Android11简单分析audio_policy_configuration.xml
  • kafka-manager修改zookeeper端口号后启动仍然连接2181端口
  • RabbitMQ 入门(三)SpringAMQP
  • celery 项目中mysql 数据库连接数耗尽事故记录
  • Python数据分析-Scipy科学计算法
  • 【Python Django + Vue】酒店在线预订系统:用技术说话!
  • 禁用微软的windos安全中心
  • 2.html编辑器介绍
  • 树莓派应用--AI项目实战篇来啦-17.YOLOv8目标检测-安全帽检测
  • git-secret介绍
  • 【实战】Nginx+Lua脚本+Redis 实现自动封禁访问频率过高IP
  • 计算机专业大一课程:线性代数探秘
  • vscode写markdown插入图片视频并放在指定目录
  • 鸿蒙富文本显示
  • 手写mybatis之细化XML语句构建器,完善静态SQL解析
  • 使用Milvus和Llama-agents构建更强大的Agent系统
  • Python 工具库每日推荐【Arrow】
  • Win10 安装 Redis 数据库
  • 使用springboot生成war包
  • 见微知著:OpenEuler系统启动流程