[英]add_library is not working in CMake for adding CSharp source files?
我正在嘗試從.cs
文件集構建 CSharp DLL。 我使用add_library()
函數添加源文件( .cs
文件)。 但它發出警告,例如“沒有任何源文件的庫 libname 的 add_library”。 請提供解決方案以使其正常工作。
提前致謝。
CMakeLists.txt 是:
cmake_minimum_required(VERSION 2.8)
project(MyAddIn)
AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/MyAdd-In/ MyAddIn_SOURCES)
SET_SOURCE_FILES_PROPERTIES(${MyAddIn_SOURCES} PROPERTIES LANGUAGE CSharp)
ADD_LIBRARY(AddInTrg SHARED ${MyAddIn_SOURCES})
SET_TARGET_PROPERTIES(AddInTrg PROPERTIES
LINKER_LANGUAGE CSharp
RUNTIME_OUTPUT_DIRECTORY bin
RUNTIME_OUTPUT_DIRECTORY_DEBUG bin
RUNTIME_OUTPUT_NAME MyAddIn_Bin
ARCHIVE_OUTPUT_DIRECTORY lib
ARCHIVE_OUTPUT_DIRECTORY_DEBUG lib
OUTPUT_NAME MyAddIn_Bin)
add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/bin/MyAddIn_Bin.dll
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/MyAdd-In
COMMAND C:/WINDOWS/Microsoft.NET/Framework/v3.5/csc.exe
ARGS
-target:library
-out ${CMAKE_CURRENT_BINARY_DIR}/bin/MyAddIn_Bin.dll
"${CMAKE_CURRENT_SOURCE_DIR}/MyAdd-In/Ribbon.cs" "${CMAKE_CURRENT_SOURCE_DIR}/MyAdd-In/ThisAddIn.cs" "${CMAKE_CURRENT_SOURCE_DIR}/MyAdd-In/Ribbon.xml"
COMMENT "-- Generating AddIn Dll")
從CMake 3.8 開始,CMake 現在完全支持 C# 作為一種語言。 您現在應該能夠使用以下內容創建 C# 程序集目標 (DLL):
# Define the DLL target, including all relevant project files.
add_library(AddInTrg SHARED ${MyAddIn_SOURCES})
# Set the .NET Framework version for the target.
set_property(TARGET AddInTrg PROPERTY VS_DOTNET_TARGET_FRAMEWORK_VERSION "v4.6.1")
# Set the C# language version (defaults to 3.0 if not set).
set(CMAKE_CSharp_FLAGS "/langversion:6")
# Add in some .NET reference libraries.
set_property(TARGET AddInTrg PROPERTY VS_DOTNET_REFERENCES
"Microsoft.CSharp"
"System"
"System.Core"
"System.Data"
"System.Deployment"
"System.Drawing"
"System.Net.Http"
"System.Xml"
)
您還可以使用 CMake 來指定 .NET 和 C# 版本,並引入任何必需的 .NET 引用。
注意:此支持僅包含 Visual Studio 2010 及更高版本。
CMake 目前沒有對 C# 的語言支持。
特別是, add_library
命令不適用於.cs
源文件。 您可以嘗試使用自定義目標手動處理所有編譯,但請注意,這極難實現,而且收益有限。
另外,看看 CMake 的ExternelProject_Add
。 如果您只想在更大的 CMake 環境中使用 MSBuild 構建外部 .csproj,這可能是正確的選擇。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.