[英]CMake CSharp reference nuget packges
我有一個通過 CMake 配置的 CSharp 項目,但在引用 nuget 包時遇到問題。 我嘗試通過以下方式添加它們:
set_property(TARGET ${PROJECT_NAME} PROPERTY VS_DOTNET_REFERENCES
"../../packages/ExcelDna.Integration.0.34.6/lib/ExcelDna.Integration.dll")
恢復nuget包后,我仍然需要雙擊Visual Studio(2015)中的引用才能成功編譯程序。 此外,是否有一種獨立於版本號的方式來添加對 nuget 包的引用? 以及如何添加某些包(例如 ExcelDna.AddIn)所需的ExtensionTargets
?
編輯:從 CMake 3.15 開始,CMake 支持使用VS_PACKAGE_REFERENCES
引用 Nuget 包。 與手動恢復 Nuget 包並在 CMake 中硬編碼包路徑相比,這是一種更簡潔的解決方案。 VS_PACKAGE_REFERENCES
目標屬性現在為您處理所有這些開銷。
要將 Nuget 包引用添加到 CMake 目標,請使用由下划線_
分隔的包名稱和包版本,如下所示:
set_property(TARGET ${PROJECT_NAME}
PROPERTY VS_PACKAGE_REFERENCES "ExcelDna.Integration_0.34.6"
)
您可以使用*
獲取范圍內的任何版本號,並使用分號附加多個包:
set_property(TARGET ${PROJECT_NAME}
PROPERTY VS_PACKAGE_REFERENCES "ExcelDna.Integration_0.34.*;ExcelDna.AddIn_1.0.0"
)
您可以使用VS_DOTNET_REFERENCE_<YourLibrary>
讓 CMake 找到您的 Nuget 包引用。 嘗試這個:
set_property(TARGET ${PROJECT_NAME} PROPERTY
VS_DOTNET_REFERENCE_ExcelDna.Integration
${CMAKE_BINARY_DIR}/packages/ExcelDna.Integration.0.34.6/lib/ExcelDna.Integration.dll
)
請注意,完整的 DLL 名稱必須附加到VS_DOTNET_REFERENCE_
指令以創建完整變量。 但是,我還沒有看到加載 Nuget 包的獨立於版本號的方式,我不得不手動編輯我的 CMake 文件以包含這些包。 您可以查看此答案以獲得更詳細的解釋。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.