我正在尝试从.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")
答案 0 :(得分:1)
CMake目前没有C#的语言支持。
特别是,add_library
命令不适用于.cs
源文件。您可以尝试使用自定义目标手动处理所有编译,但请注意,这非常难以实现,并且增益有限。
另外,看看CMake的ExternelProject_Add
。如果您只想在更大的CMake环境中使用MSBuild构建外部.csproj,这可能是正确的选择。
答案 1 :(得分:0)
我知道这是一个比较老的问题,但是从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及更高版本。