欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > CMake构建C#工程(protobuf)

CMake构建C#工程(protobuf)

2025/2/25 11:04:54 来源:https://blog.csdn.net/qq_28913223/article/details/145123851  浏览:    关键词:CMake构建C#工程(protobuf)

工程目录结构

第一级CMakeLists.txt

cmake_minimum_required(VERSION 3.0.0)
# 指定为csharp工程
project(CSharpDemo CSharp)
# 添加二级目录
add_subdirectory(src)

第二级CMakeLists.txt

cmake_minimum_required(VERSION 3.0.0)
project(CSharpDemo CSharp)# 指定protoc程序目录,用于执行输出cs文件
set(PROTOC_PATH ${CMAKE_SOURCE_DIR}/src/protoc)add_subdirectory(BaseModel)

第三级CMakeLists.txt

cmake_minimum_required(VERSION 3.0.0)
project(CSharpDemo CSharp)# 指定编译器
set(CMAKE_CSharp_COMPILER "csc")
# 指定输出目录
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_SOURCE_DIR}/output/Debug)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_SOURCE_DIR}/output/Release)set(cur_path ${CMAKE_CURRENT_SOURCE_DIR})
set(out_path ${CMAKE_CURRENT_BINARY_DIR})
message("*** ${PROTOC_PATH} ${cur_path} ${out_path}")# 获取proto文件,proto文件首字母大写
file(GLOB proto_files *.proto)# 遍历输出对应的cs文件
foreach(proto_file ${proto_files})get_filename_component(proto_name ${proto_file} NAME_WE)message("*** ${proto_file} ${proto_name}")set(csharp_file "${proto_name}.cs")add_custom_command(OUTPUT ${csharp_file}COMMAND protoc --csharp_out=${out_path} --proto_path=${cur_path} ${proto_name}.protoWORKING_DIRECTORY ${PROTOC_PATH}VERBATIM)list(APPEND csharp_files ${csharp_file})
endforeach()add_executable(${PROJECT_NAME}app.configProgram.cs TSimObject.cs${csharp_files}
)# 设置目标框架,与app.config中对应
set_property(TARGET ${PROJECT_NAME} PROPERTY VS_DOTNET_TARGET_FRAMEWORK_VERSION "v4.5")# 设置引用第三方动态库
set_property(TARGET ${PROJECT_NAME} PROPERTY VS_DOTNET_REFERENCE_MyThirdPartyLib../packages/Google.Protobuf.3.5.1/lib/net45/Google.Protobuf.dll
)# 设置引用
set_property(TARGET ${PROJECT_NAME} PROPERTY VS_DOTNET_REFERENCES"Google.Protobuf""Microsoft.CSharp""System""System.Core""System.Data""System.Data.DataSetExtensions"
)

通过build.bat执行编译

@echo offcd /d %~dp0
mkdir build
cd build
cmake .. -G "Visual Studio 12 2013"
rem cmake --build . --config Debug
if "%1"=="" (cmake --build . --config Release) else (cmake --build . --config %1)
cd ..
pause

执行后的输出如下:

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词