LibreCAD 编译详细步骤指南
环境准备确认
已安装的依赖检查
# 验证关键依赖
qmake6 --version
gcc --version
pacman -Q | grep -E "(qt6|boost|libpng|libjpeg|freetype)"
编译步骤
1. 获取源码
# 克隆 LibreCAD 源码
git clone https://github.com/LibreCAD/LibreCAD.git
cd LibreCAD# 或者下载稳定版源码包
# 解压后进入目录
2. 源码预处理
文件编码转换
# 检查并转换关键文件的编码
# 使用 iconv 或编辑器将以下文件转为 UTF-8 with BOM:
# - libraries/jwwlib/src/dl_jww.cpp
# - libraries/jwwlib/src/jwwdoc.cpp
# - libraries/jwwlib/src/jwwdoc.h
# - librecad/src/lib/engine/rs.h
使用 Notepad++ 批量转换:
- 打开文件
- 编码 → 转为 UTF-8-BOM
- 保存
3. 配置构建系统
修改 Boost 配置
# 编辑 boost.pri 文件
vim librecad/src/boost.pri
修改内容示例:
# 根据实际安装路径调整
BOOST_DIR = /mingw64/include
BOOST_LIBDIR = /mingw64/lib# 确认 Boost 版本
BOOST_VERSION = 1_85
检查第三方库
确保以下库文件可用:
# 检查必要的库文件
ls -la generated/lib/
# 应该包含:dxfrw.lib, dxflib.lib, jwwlib.lib, fparser.lib 等
4. 使用 Qt Creator 构建
打开项目
- 启动 Qt Creator
- 文件 → 打开文件或项目
- 选择
librecad.pro
- 选择构建套件 (MinGW 64-bit)
配置构建选项
# 在 Qt Creator 的构建设置中:
构建目录: build/
构建类型: Release
Shadow build: 启用
5. 编译顺序
第一步:编译 libraries
# 在 Qt Creator 中:
1. 右键点击 "libraries" 项目
2. 选择 "构建"
3. 等待完成
第二步:编译主项目
# libraries 编译成功后:
1. 右键点击 "librecad" 项目
2. 选择 "构建"
3. 等待编译完成
6. 命令行编译方式
使用 qmake + make
# 创建构建目录
mkdir build
cd build# 生成 Makefile
qmake6 ../librecad.pro# 编译 (使用多核加速)
make -j$(nproc)# 或者使用 ninja (如果配置了)
qmake6 -spec win32-g++ ../librecad.pro
ninja
7. 常见编译错误及修复
错误1:字符编码问题
// 错误示例
p.DefineConst("pi", M_PI);// 修复:改为宽字符
p.DefineConst(L"pi", M_PI);
错误2:字符串转换问题
// 错误示例
std::cout << e.GetMsg() << std::endl;// 修复:使用 QString 转换
std::cout << QString::fromStdWString(e.GetMsg()).toStdString() << std::endl;
错误3:成员初始化问题
// 在头文件 rs_actiondrawcircletan2.h 中
// 注释掉类内初始化
// circleType = 0;// 在 .cpp 文件的构造函数中初始化
RS_ActionDrawCircleTan2::RS_ActionDrawCircleTan2(...) : circleType(0) // 在初始化列表中初始化
{// ...
}
错误4:资源文件缺失
# 复制资源文件到构建目录
cp -r licenses/ build/Win32/Release/
cp -r librecad/src/resources/ build/Win32/Release/
8. 依赖库处理
检查动态库依赖
# 使用 ldd 检查可执行文件的依赖
ldd librecad.exe# 确保以下库可用:
# - Qt6Core.dll
# - Qt6Gui.dll
# - Qt6Widgets.dll
# - libstdc++-6.dll
# - libgcc_s_seh-1.dll
# - libwinpthread-1.dll
复制运行时依赖
# 将必要的 DLL 复制到可执行文件目录
cp /mingw64/bin/Qt6Core.dll build/release/
cp /mingw64/bin/Qt6Gui.dll build/release/
cp /mingw64/bin/Qt6Widgets.dll build/release/
# ... 其他需要的 DLL
9. 测试运行
启动应用程序
# 进入构建目录
cd build/release# 运行 LibreCAD
./librecad.exe
功能验证
- 检查界面是否正常显示
- 测试基本绘图功能
- 验证文件打开/保存功能
10. 打包发布
创建发布包
# 收集所有必要文件
mkdir LibreCAD-Portable
cp librecad.exe LibreCAD-Portable/
cp -r licenses/ LibreCAD-Portable/
cp -r library/ LibreCAD-Portable/
cp -r qm/ LibreCAD-Portable/# 复制 DLL 文件
cp /mingw64/bin/*.dll LibreCAD-Portable/# 创建启动脚本(可选)
echo '#!/bin/bash' > LibreCAD-Portable/run.sh
echo './librecad.exe' >> LibreCAD-Portable/run.sh
故障排除
常见问题解决
Q1: 找不到 Qt 模块
# 确保 Qt6 安装正确
pacman -S mingw-w64-x86_64-qt6-base
Q2: Boost 链接错误
# 检查 Boost 版本和路径
echo $BOOST_DIR
ls $BOOST_LIBDIR/libboost*
Q3: 编译卡住或内存不足
# 减少并行编译任务
make -j2 # 使用 2 个核心
编译成功标志
- 无编译错误和警告
- 生成
librecad.exe
可执行文件 - 应用程序正常启动
- 基本功能测试通过