这是一个对原有 Astrolog32 程序的重构项目,目标是改善代码结构和可维护性,并将其构建成一个静态库供其他项目使用。
astroproject/
├── CMakeLists.txt
├── README.md
├── bin/
│ └── windows/
│ ├── Debug/
│ │ ├── astrolog32_oldmain.exe
│ │ ├── astrolog32_apimain.exe
│ │ └── swedll32.dll
│ └── Release/
│ ├── astrolog32_oldmain.exe
│ ├── astrolog32_apimain.exe
│ └── swedll32.dll
├── include/
│ ├── astrolog.h
│ ├── astrolog_lib.h
│ ├── core/
│ │ ├── planet.h
│ │ ├── aspects.h
│ │ ├── houses.h
│ │ ├── fixed_stars.h
│ │ ├── lunar_nodes.h
│ │ ├── progressions.h
│ │ ├── transits.h
│ │ ├── synastry.h
│ │ ├── ephemeris.h
│ │ ├── chart.h
│ │ ├── options.h
│ │ └── transits.h
│ ├── data/
│ │ └── signs.h
│ ├── models/
│ │ ├── settings.h
│ │ ├── chart_data.h
│ │ └── version.h
│ └── utils/
│ ├── TransU.h
│ ├── parser.h
│ ├── formatter.h
│ └── utils.h
├── lib/
│ └── windows/
│ ├── Debug/
│ │ └── astrolog32.lib
│ └── Release/
│ └── astrolog32.lib
├── src/
│ ├── astrolog.cpp
│ ├── core/
│ │ ├── planet.cpp
│ │ ├── aspects.cpp
│ │ ├── houses.cpp
│ │ ├── fixed_stars.cpp
│ │ ├── lunar_nodes.cpp
│ │ ├── progressions.cpp
│ │ ├── transits.cpp
│ │ ├── synastry.cpp
│ │ ├── ephemeris.cpp
│ │ └── chart.cpp
│ ├── models/
│ └── utils/
│ ├── utils.cpp
│ ├── parser.cpp
│ ├── formatter.cpp
│ └── TransU.cpp
├── swe/
│ ├── inc/
│ └── lib/
│ └── windows/
└── test/
├── oldmain.cpp
└── apimain.cpp
项目使用 CMake 构建系统,支持跨平台编译。
mkdir build
cd build
cmake ..
make
在Windows平台上,可以使用Visual Studio进行编译: Debug模式:
mkdir build
cd build
cmake .. -G "Visual Studio 17 2022" -A Win32
cmake --build . --config Debug
Release模式:
mkdir build
cd build
cmake .. -G "Visual Studio 17 2022" -A Win32
cmake --build . --config Release
注意:项目强制使用x86架构,即使在64位系统上也是如此。
可以通过设置CMAKE_BUILD_TYPE变量来选择构建类型:
# 调试模式(默认)
cmake .. -DCMAKE_BUILD_TYPE=Debug
# 发布模式
cmake .. -DCMAKE_BUILD_TYPE=Release
项目会根据使用的编译器自动设置适当的编译选项:
MSVC(Microsoft Visual C++):
/Zi /RTC1/O2/W3, /EHscGCC/Clang:
-g -ggdb-O3-finput-charset=UTF-8 -fexec-charset=UTF-8项目构建后会生成以下主要文件,按构建配置分类:
lib/windows/Debug/astrolog32.lib - 调试版本的静态库bin/windows/Debug/astrolog32_oldmain.exe - 使用旧版主函数的测试程序bin/windows/Debug/astrolog32_apimain.exe - 使用新API接口的测试程序bin/windows/Debug/swedll32.dll - Debug版本的Swiss Ephemeris动态库lib/windows/Release/astrolog32.lib - 发布版本的静态库bin/windows/Release/astrolog32_oldmain.exe - 使用旧版主函数的测试程序bin/windows/Release/astrolog32_apimain.exe - 使用新API接口的测试程序bin/windows/Release/swedll32.dll - Release版本的Swiss Ephemeris动态库项目现在作为静态库提供,主要接口包括:
initEnv() - 初始化环境RParseSz() - 字符串解析函数SetChartData() - 设置星盘数据GetChartAspect() - 获取星盘相位信息GetChartAspectRelation() - 获取星盘相位关系信息GetChartResult() - 获取完整的星盘结果已完成:
待完成: