第02章 - 环境搭建与安装配置

第02章 - 环境搭建与安装配置

2.1 系统要求

2.1.1 支持的操作系统

LibreDWG可以在多种操作系统上编译和运行:

操作系统 支持状态 推荐程度
Linux (Ubuntu/Debian) ✓ 完全支持 ⭐⭐⭐⭐⭐
Linux (Fedora/RHEL/CentOS) ✓ 完全支持 ⭐⭐⭐⭐⭐
Linux (Arch) ✓ 完全支持 ⭐⭐⭐⭐⭐
Windows (MSYS2/MinGW) ✓ 完全支持 ⭐⭐⭐⭐
Windows (Visual Studio) ✓ 通过CMake支持 ⭐⭐⭐
macOS ✓ 完全支持 ⭐⭐⭐⭐
FreeBSD ✓ 支持 ⭐⭐⭐

2.1.2 必需的依赖

基本构建工具:

依赖项 版本要求 说明
C99编译器 GCC 4.8+ 或 Clang 3.5+ 必需
make 任意版本 必需
autoconf 2.69+ 源码编译需要
automake 1.14+ 源码编译需要
libtool 2.4+ 必需

2.1.3 可选依赖

依赖项 用途 推荐安装
libiconv 代码页转换(提高性能) 推荐
libmimalloc 更快的内存分配 可选
pslib DWG转PostScript 可选
pcre2 (8bit+16bit) dwggrep正则表达式支持 推荐
gperf 更新静态哈希表 开发者需要
cmake 替代构建系统 可选
ninja 快速构建 可选
texinfo 构建文档 可选
SWIG 1.7+ Python/Perl绑定 推荐
Python开发头文件 Python绑定 推荐
Perl 5 Perl绑定 可选
doxygen 生成参考手册 可选
jq JSON过滤器后端 可选

2.2 Linux环境安装

2.2.1 Ubuntu/Debian系统

方法一:从源码编译(推荐)

# 1. 安装依赖
sudo apt update
sudo apt install -y \
    build-essential \
    autoconf \
    automake \
    libtool \
    pkg-config \
    git \
    libiconv-hook-dev \
    libpcre2-dev \
    libps-dev \
    swig \
    python3-dev \
    texinfo \
    doxygen \
    jq

# 2. 克隆源码
git clone https://github.com/LibreDWG/libredwg.git
cd libredwg

# 3. 生成配置脚本
sh ./autogen.sh

# 4. 配置
./configure --prefix=/usr/local

# 5. 编译
make -j$(nproc)

# 6. 运行测试(可选)
make check

# 7. 安装
sudo make install

# 8. 更新动态链接库缓存
sudo ldconfig

方法二:使用预编译包(如果可用)

# 某些发行版可能提供预编译包
sudo apt install libredwg-dev libredwg-tools

2.2.2 Fedora/RHEL/CentOS系统

# 1. 安装依赖
sudo dnf install -y \
    gcc \
    make \
    autoconf \
    automake \
    libtool \
    pkgconfig \
    git \
    pcre2-devel \
    swig \
    python3-devel \
    texinfo \
    doxygen

# 2. 克隆并编译
git clone https://github.com/LibreDWG/libredwg.git
cd libredwg
sh ./autogen.sh
./configure
make -j$(nproc)
sudo make install
sudo ldconfig

2.2.3 Arch Linux系统

# 1. 安装依赖
sudo pacman -S \
    base-devel \
    git \
    pcre2 \
    swig \
    python \
    texinfo \
    doxygen

# 2. 可以从AUR安装(如果可用)
# yay -S libredwg

# 或从源码编译
git clone https://github.com/LibreDWG/libredwg.git
cd libredwg
sh ./autogen.sh
./configure
make -j$(nproc)
sudo make install

2.2.4 验证安装

# 检查库是否正确安装
ldconfig -p | grep libredwg

# 检查头文件
ls /usr/local/include/dwg*.h

# 检查命令行工具
which dwg2dxf
dwg2dxf --version

# 检查pkg-config
pkg-config --modversion libredwg

2.3 Windows环境安装

2.3.1 使用MSYS2(推荐)

MSYS2是Windows上最方便的Unix-like开发环境。

步骤1:安装MSYS2

  1. 下载MSYS2安装程序:https://www.msys2.org/
  2. 运行安装程序,安装到默认位置(如 C:\msys64
  3. 启动MSYS2 MinGW 64-bit终端

步骤2:安装依赖

# 更新包管理器
pacman -Syu

# 安装构建工具和依赖
pacman -S \
    mingw-w64-x86_64-gcc \
    mingw-w64-x86_64-make \
    autoconf \
    automake \
    libtool \
    git \
    mingw-w64-x86_64-pcre2 \
    mingw-w64-x86_64-python \
    mingw-w64-x86_64-swig

步骤3:编译LibreDWG

# 克隆源码
git clone https://github.com/LibreDWG/libredwg.git
cd libredwg

# 生成配置
sh ./autogen.sh

# 配置(使用MinGW)
./configure --prefix=/mingw64

# 编译
make -j$(nproc)

# 安装
make install

2.3.2 使用CMake和Visual Studio

步骤1:安装必要软件

  1. 安装Visual Studio 2019/2022(包含C++开发工具)
  2. 安装CMake:https://cmake.org/download/
  3. 安装Git:https://git-scm.com/

步骤2:获取源码

git clone https://github.com/LibreDWG/libredwg.git
cd libredwg

步骤3:使用CMake配置

# 创建构建目录
mkdir build
cd build

# 配置项目
cmake .. -G "Visual Studio 16 2019" -A x64

# 或使用Visual Studio 2022
cmake .. -G "Visual Studio 17 2022" -A x64

步骤4:编译

# 命令行编译
cmake --build . --config Release

# 或在Visual Studio中打开解决方案编译

2.3.3 使用预编译二进制文件

LibreDWG提供Windows预编译版本:

  1. 访问 https://github.com/LibreDWG/libredwg/releases
  2. 下载适合您系统的预编译包
  3. 解压到目标目录
  4. 将bin目录添加到系统PATH
# 设置环境变量(示例)
set PATH=%PATH%;C:\libredwg\bin

2.4 macOS环境安装

2.4.1 使用Homebrew

# 1. 安装Xcode命令行工具
xcode-select --install

# 2. 安装Homebrew(如果未安装)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# 3. 安装依赖
brew install \
    autoconf \
    automake \
    libtool \
    pkg-config \
    pcre2 \
    swig \
    python

# 4. 克隆并编译
git clone https://github.com/LibreDWG/libredwg.git
cd libredwg
sh ./autogen.sh
./configure
make -j$(sysctl -n hw.ncpu)
sudo make install

2.4.2 使用MacPorts

# 安装依赖
sudo port install \
    autoconf \
    automake \
    libtool \
    pkgconfig \
    pcre2 \
    swig-python

# 编译步骤与上述相同

2.5 配置选项详解

2.5.1 configure脚本选项

运行./configure --help可查看所有选项,以下是常用选项:

安装路径选项:

--prefix=PREFIX         # 安装前缀,默认/usr/local
--exec-prefix=EPREFIX   # 可执行文件前缀
--libdir=DIR            # 库文件目录
--includedir=DIR        # 头文件目录

功能开关选项:

--enable-release        # 发布模式(推荐用于生产)
--enable-trace          # 启用运行时跟踪
--enable-debug          # 启用调试模式(不稳定类支持)
--enable-gcov           # 启用代码覆盖率

--disable-write         # 禁用DWG写入功能
--disable-bindings      # 禁用SWIG绑定
--disable-dxf           # 禁用DXF相关模块
--disable-json          # 禁用JSON模块
--disable-python        # 禁用Python绑定

精度控制选项:

--with-dxf-precision=N      # DXF小数位数(默认16,推荐6)
--with-geojson-precision=N  # GeoJSON小数位数(RFC推荐6)

其他选项:

--with-perl-install=TYPE    # Perl绑定安装位置
                            # vendor/arch/yes/no/site

2.5.2 推荐配置组合

开发调试配置:

./configure \
    --enable-trace \
    --enable-debug \
    CFLAGS="-g -O0"

生产发布配置:

./configure \
    --enable-release \
    --with-dxf-precision=6 \
    CFLAGS="-O2"

最小化构建配置:

./configure \
    --disable-bindings \
    --disable-dxf \
    --disable-json

完整功能配置:

./configure \
    --enable-trace \
    --with-dxf-precision=6 \
    --with-geojson-precision=6

2.6 环境变量配置

2.6.1 库路径配置

Linux/macOS:

# 添加到 ~/.bashrc 或 ~/.zshrc
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH

# 可执行文件路径
export PATH=/usr/local/bin:$PATH

Windows(PowerShell):

# 临时设置
$env:PATH = "C:\libredwg\bin;$env:PATH"

# 永久设置(需要管理员权限)
[Environment]::SetEnvironmentVariable("PATH", "C:\libredwg\bin;$env:PATH", "User")

2.6.2 跟踪与调试环境变量

# 设置LibreDWG跟踪级别(0-9)
export LIBREDWG_TRACE=3

# 跟踪级别说明:
# 0 = 无输出
# 1-3 = 基本信息
# 4-6 = 详细信息
# 7-9 = 完全详细

2.7 IDE开发环境配置

2.7.1 Visual Studio Code配置

c_cpp_properties.json:

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**",
                "/usr/local/include"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "c99",
            "intelliSenseMode": "linux-gcc-x64"
        }
    ],
    "version": 4
}

tasks.json(构建任务):

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "type": "shell",
            "command": "gcc",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}",
                "-lredwg"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

2.7.2 CLion配置

CMakeLists.txt:

cmake_minimum_required(VERSION 3.10)
project(MyDWGProject C)

set(CMAKE_C_STANDARD 99)

# 查找LibreDWG
find_package(PkgConfig REQUIRED)
pkg_check_modules(LIBREDWG REQUIRED libredwg)

# 添加可执行文件
add_executable(my_dwg_app main.c)

# 链接LibreDWG
target_include_directories(my_dwg_app PRIVATE ${LIBREDWG_INCLUDE_DIRS})
target_link_libraries(my_dwg_app ${LIBREDWG_LIBRARIES})

2.7.3 Qt Creator配置

.pro文件:

QT -= gui

CONFIG += c99 console
CONFIG -= app_bundle

SOURCES += main.c

# LibreDWG配置
unix {
    LIBS += -lredwg
    INCLUDEPATH += /usr/local/include
}

win32 {
    LIBS += -LC:/libredwg/lib -lredwg
    INCLUDEPATH += C:/libredwg/include
}

2.8 Python绑定安装

2.8.1 从源码安装Python绑定

# 确保已安装SWIG和Python开发头文件
# Ubuntu/Debian
sudo apt install swig python3-dev

# 编译时启用Python绑定
./configure --enable-python
make
sudo make install

# 或者单独构建Python绑定
cd bindings/python
python3 setup.py build
python3 setup.py install --user

2.8.2 验证Python绑定

#!/usr/bin/env python3
import libredwg

# 检查版本
print(f"LibreDWG version: {libredwg.LIBREDWG_VERSION}")

# 测试基本功能
dwg = libredwg.Dwg_Data()
print("Python绑定安装成功!")

2.8.3 Python虚拟环境配置

# 创建虚拟环境
python3 -m venv venv
source venv/bin/activate  # Linux/macOS
# 或 venv\Scripts\activate  # Windows

# 安装LibreDWG Python绑定
cd libredwg/bindings/python
pip install .

2.9 常见安装问题

2.9.1 问题诊断

问题1:找不到libredwg库

# 错误信息
error while loading shared libraries: libredwg.so: cannot open shared object file

# 解决方案
sudo ldconfig
# 或添加库路径
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

问题2:头文件找不到

# 错误信息
fatal error: dwg.h: No such file or directory

# 解决方案
# 检查头文件位置
find /usr -name "dwg.h" 2>/dev/null

# 编译时指定包含路径
gcc -I/usr/local/include ...

问题3:链接错误

# 错误信息
undefined reference to `dwg_read_file'

# 解决方案
# 确保链接顺序正确
gcc main.c -o main -lredwg  # -lredwg 放在最后

问题4:autoconf/automake版本过低

# 错误信息
configure.ac:XX: error: possibly undefined macro: AC_XXX

# 解决方案
# 更新autotools
sudo apt install autoconf automake libtool

2.9.2 Windows特定问题

问题:DLL找不到

# 解决方案1:将DLL所在目录添加到PATH
set PATH=%PATH%;C:\libredwg\bin

# 解决方案2:将DLL复制到可执行文件目录
copy C:\libredwg\bin\libredwg.dll .\

问题:MSVC编译报错

确保:
1. 安装了stdint.h和inttypes.h(C99标准头文件)
2. 使用支持C99的编译器设置
3. CMake配置正确

2.9.3 macOS特定问题

问题:dylib加载失败

# 错误信息
dyld: Library not loaded: @rpath/libredwg.dylib

# 解决方案
export DYLD_LIBRARY_PATH=/usr/local/lib:$DYLD_LIBRARY_PATH

# 或修复rpath
install_name_tool -add_rpath /usr/local/lib ./your_app

2.10 测试安装

2.10.1 运行LibreDWG测试套件

# 在源码目录中
make check

# 查看测试结果
cat test-suite.log

2.10.2 编写测试程序

test_install.c:

#include <stdio.h>
#include <dwg.h>

int main(void)
{
    printf("LibreDWG安装测试\n");
    printf("================\n");
    
    Dwg_Data dwg;
    
    // 初始化空的DWG结构
    memset(&dwg, 0, sizeof(Dwg_Data));
    
    printf("Dwg_Data结构大小: %zu bytes\n", sizeof(Dwg_Data));
    printf("安装验证成功!\n");
    
    return 0;
}

编译和运行:

gcc test_install.c -o test_install -lredwg
./test_install

2.10.3 测试命令行工具

# 创建测试脚本
cat > test_tools.sh << 'EOF'
#!/bin/bash
echo "测试LibreDWG命令行工具..."

# 测试dwg2dxf
if command -v dwg2dxf &> /dev/null; then
    echo "✓ dwg2dxf 已安装"
    dwg2dxf --version
else
    echo "✗ dwg2dxf 未找到"
fi

# 测试dwglayers
if command -v dwglayers &> /dev/null; then
    echo "✓ dwglayers 已安装"
else
    echo "✗ dwglayers 未找到"
fi

# 测试dwggrep
if command -v dwggrep &> /dev/null; then
    echo "✓ dwggrep 已安装"
else
    echo "✗ dwggrep 未找到"
fi

echo "测试完成"
EOF

chmod +x test_tools.sh
./test_tools.sh

2.11 本章小结

本章详细介绍了LibreDWG的安装配置:

  1. 系统要求:了解了支持的操作系统和必需/可选依赖
  2. Linux安装:Ubuntu/Debian、Fedora/RHEL、Arch Linux的安装方法
  3. Windows安装:MSYS2、Visual Studio、预编译包三种方式
  4. macOS安装:使用Homebrew或MacPorts
  5. 配置选项:详细的configure选项和推荐配置组合
  6. 环境变量:库路径和调试相关的环境变量设置
  7. IDE配置:VS Code、CLion、Qt Creator的项目配置
  8. Python绑定:Python绑定的安装和验证
  9. 常见问题:安装过程中可能遇到的问题及解决方案
  10. 测试验证:验证安装是否成功的方法

下一章预告第03章 - DWG文件格式详解 - 深入了解DWG文件的内部结构和数据组织方式。


posted @ 2026-01-10 13:40  我才是银古  阅读(22)  评论(0)    收藏  举报