Skip to content

Latest commit

 

History

History
78 lines (54 loc) · 2.85 KB

File metadata and controls

78 lines (54 loc) · 2.85 KB

빌드와 패키징

지원 환경

  • Windows x64: Visual Studio C++17 toolset, CMake 3.24+, Python 3, .NET 10 SDK
  • Rocky Linux 9 x64: GCC C++17, CMake 3.24+, Python 3, .NET 10 SDK
  • Rocky 검증용 Windows 호스트: Docker Desktop Linux containers

build.ps1은 PATH의 CMake를 먼저 사용하고, 없으면 Visual Studio에 포함된 CMake를 찾습니다. MAK RTI는 현재 Mock-only 빌드에 필요하지 않습니다.

./build.ps1 -Doctor
./build.ps1 -Generate
./build.ps1 -Configuration Debug -Test
./build.ps1 -Configuration Release -Test -Package

-Doctor 결과는 artifacts/BUILD-DOCTOR.json에도 저장됩니다. MAK RTI가 설치되지 않은 경우 경고만 표시하며 Mock 빌드는 계속 사용할 수 있습니다.

패키지는 artifacts/makrti-client-Release.zip에 생성되고, static library, C++ shared library, C ABI DLL, header, FDD/config와 SHA-256 manifest.json을 포함합니다.

Rocky Linux 9

Windows에서 Rocky 9 Docker image로 전체 빌드와 테스트를 실행합니다.

./tools/test-rocky9.ps1 -Configuration Release

Rocky Linux 9 호스트에서는 다음 명령을 직접 사용합니다.

./build.sh --doctor --generate --clean --configuration Release --test --package

artifacts/makrti-client-rocky9-x64.tar.gz에는 libmakrti_client.a, libmakrti_client.so, libmakrti_c.so와 header/CMake package가 들어갑니다.

NuGet

Windows와 Rocky native package가 준비된 다음 실행합니다.

./tools/package-nuget.ps1

스크립트는 패키지 내부의 net8.0, net10.0, runtimes/win-x64/native, runtimes/linux-x64/native 항목을 검사하고 패키지만 참조하는 소비자 앱을 Windows와 Rocky Linux 9에서 각각 실행합니다. 결과는 artifacts/nuget/MAKRTI.Client.0.2.0.nupkg입니다.

CMake 소비자

설치 prefix를 CMAKE_PREFIX_PATH에 추가한 뒤 다음과 같이 연결합니다.

find_package(MakRtiClient CONFIG REQUIRED)
target_link_libraries(my_federate PRIVATE MakRtiClient::static) # 또는 ::shared, ::c

MakRtiClient::shared는 같은 compiler/toolset의 C++ ABI를 전제로 합니다. 다른 언어, compiler 또는 장기 ABI 안정성이 필요한 소비자는 MakRtiClient::cc_api.h를 사용합니다. 저장소의 테스트는 static/shared/C ABI를 모두 실행합니다.

MAK RTI adapter 추가 조건

MAK RTI 4.6.1 설치본에서 아래 항목을 확인하기 전에는 vendor adapter를 활성화하지 않습니다.

  • IEEE 1516-2000 SISO DLC header와 정확한 namespace
  • x64 library 이름과 Debug/Release runtime 조합
  • 지원 MSVC toolset 및 ABI
  • create/join/resign example
  • RID, rtiexec, license 검색 규칙

확인된 adapter는 코어와 분리된 CMake target으로 만들고 상용 binary는 저장소나 공개 패키지에 포함하지 않습니다.