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

【LibreCAD】 CMakeLists.txt 分析

项目基本信息

cmake_minimum_required(VERSION 3.28)
project(LibreCAD VERSION 2.2.2)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

主要配置

1. Qt 相关配置

set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOUIC_OPTIONS --connections string)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)find_package(Qt6 COMPONENTS Gui Core Widgets PrintSupport Svg Network REQUIRED)
find_package(Qt6 REQUIRED COMPONENTS LinguistTools)

2. 依赖库

find_package(Boost REQUIRED COMPONENTS)
find_package(Freetype)

3. 编译定义

add_compile_definitions(DWGSUPPORT)
add_compile_definitions(MUPARSER_STATIC)
add_compile_definitions(LC_VERSION=2.2.2.5-alpha)
add_compile_definitions(LC_PRERELEASE=true)

文件管理

1. 排除的文件模式

使用 file(GLOB_RECURSE AUTO_EXCLUDED_SOURCES ...) 定义了一些要排除的源文件模式。

2. 包含目录

大量的 include_directories() 调用,包含了项目的各个模块目录。

3. 源文件列表

set(SOURCES ...) 包含了大量的源文件:

  • 资源文件 (.qrc)
  • 库文件 (jwwlib, libdxfrw, muparser)
  • 动作和操作相关的源文件
  • 引擎核心文件
  • UI 组件文件
  • 插件相关文件

目标构建

主可执行文件

qt_add_executable(librecadlibrecad/src/main/main.cpp${SOURCES})target_link_libraries(librecad PRIVATE Qt6::Core Qt6::Widgets Qt6::Gui Qt6::PrintSupport Qt6::Svg Qt::Network)

国际化支持

qt_add_translations(librecad TS_FILE_DIR ${TS_DIR} TS_FILES ${TS_FILES})
install(TARGETS librecad RUNTIME DESTINATION bin)

工具和插件

# TTF 到 LFF 转换工具
add_executable(ttf2lff tools/ttf2lff/main.cpp)# 子目录
add_subdirectory(libraries/lciconengine)
add_subdirectory(plugins)

测试支持(可选)

option(BUILD_TESTS "Build unit tests for LibreCAD" OFF)
if(BUILD_TESTS)# 测试配置...
endif()

主要特点

  • 模块化结构:代码按功能模块组织,包含引擎、UI、动作、过滤器等
  • Qt6 支持:使用现代 Qt6 框架
  • 国际化:支持多语言翻译
  • 插件系统:支持插件扩展
  • 跨平台:支持 Windows 和 Unix-like 系统

可改进的建议

  • 使用 target_include_directories 替代旧的 include_directories
  • 将源文件分组到不同的变量中,提高可维护性
  • 考虑使用 CMake 的 find_package 来管理第三方依赖
  • 添加版本配置和安装规则

这个 CMakeLists.txt 文件整体结构清晰,但包含大量硬编码的路径和文件列表,可以考虑进一步模块化。

http://www.dtcms.com/a/505357.html

相关文章:

  • 我是做网站的WordPress修改数据库地址
  • 网站代运营 如何纳税专业的网页制作公司
  • 网站死链怎么办跨境电商平台有哪些
  • dede网站改成自适应成都网站平台建设
  • 网站基础建设巴巴商友圈asp网站后台无法编辑
  • 微信公众号手机网站美食网站开发意义
  • 网站建设简称什么石家庄开发区网站建设
  • 网站后台发布了但看不见正能量网站建设
  • 网站首页页面设计如何安装网站模板文件
  • 苏州市城乡建设局网站学做网站制作
  • 如何做网站推广页面智能建站模板
  • 山西长治做网站公司怎么开发手机页面
  • 网站建设找实体还是淘宝网络营销是学什么的
  • 深圳网站建设公司首选丹东网站建设平台
  • 网站建设的基本特点手机兼职赚钱正规平台怎么找
  • 做网站上饶南京刚刚发生的大事
  • 网站例子网站重复
  • 哪里有网站建设的企业大连建站免费模板
  • 衡阳网站优化公司惠州电商网站建设
  • 郴州网站建设公司电话做推广网络
  • php 网站建设流程英文网站建设cms
  • 茶叶网站建设网页设计制作网站页面设计合同
  • 网站首页生成静态页面室内设计经典案例
  • 南京做网站的网络公司网站建设推广总结
  • 网站域名查ip什么是seo
  • 新手学建设网站书籍做风能的网站
  • 做企业网站安装什么系统好wordpress在图片上加链接
  • 企业网站psd模板珠海市斗门建设局网站
  • 网站开发周期定义网站推广类型
  • 跨境电商的erp系统双滦区seo整站排名