[Troubleshooting] C++ Native 프로젝트의 NuGet 배포
설명
Microsoft의 문서에는 C# 프로젝트에 대한 NuGet 활용만 자세히 기술되어 있고, Native C++에 대한 문서는 부족함. 간단한 C++ 프로젝트를 패키징하고 배포하는 과정에서 문제가 발생함. 참고한 링크는 다음과 같음:
https://www.cognex.com/ko-kr/blogs/deep-learning/research/dependency-management-c-based-windows-application-using-nuget
https://digitalhouseblog.wordpress.com/2019/08/22/how-to-make-a-nuget-package-for-c/
전자의 경우 빌드에 대한 구성을 패키지에 포함하지 않아 Visual Studio에서 패키지 매니저를 통한 라이브러리 설치 시 추가적으로 packages/ 폴더 내의 해당 라이브러리 디렉토리를 include해주어야 하는 문제가 있었음.
후자의 경우 이를 처리할 수 있어 보이나, 경로에 대한 적절한 설명이 부족하여 문제를 겪음.
원인
build를 위한 props 파일의 구성
해결
AdditionalIncludeDirectories 항목을 $(MSBuildThisFileDirectory)\..\include 로 설정해주어서 해결하였음. MSBuildThisFileDirectory 매크로는 말 그대로 해당 파일의 경로임.
- .nuspec에서 build 폴더에 빌드 설정을 담은 .props 파일을 담도록 명세하였음
- .props에서 말하는 MSBuildThisFileDirectory는 NuGet 패키지 매니저에 의해서 설치된 {ProjectPath}/packages/build/ 경로가 될 것임.
- .nuspec에서 포함될 헤더 파일들은 include 폴더에 담도록 명세하였음.
- 따라서 $(MSBuildThisFileDirectory)\..\include로 설정해주는 것이 적절함.
- 상술한 링크에서는 props가 가장 root에 있었기 때문에 링크에서 설명한 props 설정이 유효하였음.
- 또한 lib을 사용하는 경우 link를 위해 이를 조작해주어야 함. 추가적인 라이브러리 디렉토리를 추가하고, 해당하는 *.lib을 명시해주었음.
참고:
https://github.com/SubinHan/luna-nyvux/tree/v1.0.2
댓글
댓글 쓰기