{{ label!='' ? 'Label : ' : (q!='' ? '검색 : ' : '전체 게시글') }} {{ label }} {{ q }} {{ ('('+(pubs|date:'yyyy-MM')+')') }}

[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 매크로는 말 그대로 해당 파일의 경로임.

  1. .nuspec에서 build 폴더에 빌드 설정을 담은 .props 파일을 담도록 명세하였음
  2. .props에서 말하는 MSBuildThisFileDirectory는 NuGet 패키지 매니저에 의해서 설치된  {ProjectPath}/packages/build/ 경로가 될 것임.
  3. .nuspec에서 포함될 헤더 파일들은 include 폴더에 담도록 명세하였음.
  4. 따라서 $(MSBuildThisFileDirectory)\..\include로 설정해주는 것이 적절함.
  5. 상술한 링크에서는 props가 가장 root에 있었기 때문에 링크에서 설명한 props 설정이 유효하였음.
  6. 또한 lib을 사용하는 경우 link를 위해 이를 조작해주어야 함. 추가적인 라이브러리 디렉토리를 추가하고, 해당하는 *.lib을 명시해주었음.

참고:

https://github.com/SubinHan/luna-nyvux/tree/v1.0.2

댓글

이 블로그의 인기 게시물

[코딩의탑] 4층: 툰 쉐이딩

[코딩의탑] 3층: 바다 렌더링

[코딩의탑] 5층: 포탈(Portal), 더 나아가기