这是一个对原有 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() - 获取完整的星盘结果已完成:
待完成: