Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 添加库在CMake中无法用于添加CSharp源文件?_C#_Windows_Visual Studio 2010_Cmake - Fatal编程技术网

C# 添加库在CMake中无法用于添加CSharp源文件?

C# 添加库在CMake中无法用于添加CSharp源文件?,c#,windows,visual-studio-2010,cmake,C#,Windows,Visual Studio 2010,Cmake,我正在尝试从.cs文件集构建CSharp DLL。我使用add_library()函数添加源文件(.cs文件)。但它给出了类似“为没有任何源文件的libname库添加_库”的警告。请提供一个解决方案,使其发挥作用 提前谢谢 CMakeLists.txt是: cmake_minimum_required(VERSION 2.8) project(MyAddIn) AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/MyAdd-In/ MyAddIn

我正在尝试从
.cs
文件集构建CSharp DLL。我使用
add_library()
函数添加源文件(
.cs
文件)。但它给出了类似“为没有任何源文件的libname库添加_库”的警告。请提供一个解决方案,使其发挥作用

提前谢谢

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目前不支持C语言

特别是,
add_library
命令将不适用于
.cs
源文件。您可以尝试使用自定义目标手动处理所有编译,但请注意,这极为困难,而且收益有限

另外,看看CMake的。如果您只想在更大的CMake环境中使用MSBuild构建外部.csproj,那么这可能是一个正确的选择。

截至,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及更高版本