xref: /aosp_15_r20/external/protobuf/examples/CMakeLists.txt (revision 1b3f573f81763fcece89efc2b6a5209149e44ab8)
1*1b3f573fSAndroid Build Coastguard Worker# Minimum CMake required
2*1b3f573fSAndroid Build Coastguard Workercmake_minimum_required(VERSION 2.8.12)
3*1b3f573fSAndroid Build Coastguard Worker
4*1b3f573fSAndroid Build Coastguard Worker# Project
5*1b3f573fSAndroid Build Coastguard Workerproject(protobuf-examples)
6*1b3f573fSAndroid Build Coastguard Worker
7*1b3f573fSAndroid Build Coastguard Worker# Find required protobuf package
8*1b3f573fSAndroid Build Coastguard Workerfind_package(protobuf CONFIG REQUIRED)
9*1b3f573fSAndroid Build Coastguard Worker
10*1b3f573fSAndroid Build Coastguard Workerif(protobuf_VERBOSE)
11*1b3f573fSAndroid Build Coastguard Worker  message(STATUS "Using Protocol Buffers ${protobuf_VERSION}")
12*1b3f573fSAndroid Build Coastguard Workerendif()
13*1b3f573fSAndroid Build Coastguard Worker
14*1b3f573fSAndroid Build Coastguard Workerset(CMAKE_INCLUDE_CURRENT_DIR TRUE)
15*1b3f573fSAndroid Build Coastguard Worker
16*1b3f573fSAndroid Build Coastguard Worker# http://www.cmake.org/Wiki/CMake_FAQ#How_can_I_build_my_MSVC_application_with_a_static_runtime.3F
17*1b3f573fSAndroid Build Coastguard Workerif(MSVC AND protobuf_MSVC_STATIC_RUNTIME)
18*1b3f573fSAndroid Build Coastguard Worker  foreach(flag_var
19*1b3f573fSAndroid Build Coastguard Worker      CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
20*1b3f573fSAndroid Build Coastguard Worker      CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
21*1b3f573fSAndroid Build Coastguard Worker    if(${flag_var} MATCHES "/MD")
22*1b3f573fSAndroid Build Coastguard Worker      string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
23*1b3f573fSAndroid Build Coastguard Worker    endif(${flag_var} MATCHES "/MD")
24*1b3f573fSAndroid Build Coastguard Worker  endforeach()
25*1b3f573fSAndroid Build Coastguard Workerendif()
26*1b3f573fSAndroid Build Coastguard Worker
27*1b3f573fSAndroid Build Coastguard Workerforeach(example add_person list_people)
28*1b3f573fSAndroid Build Coastguard Worker  set(${example}_SRCS ${example}.cc)
29*1b3f573fSAndroid Build Coastguard Worker  set(${example}_PROTOS addressbook.proto)
30*1b3f573fSAndroid Build Coastguard Worker
31*1b3f573fSAndroid Build Coastguard Worker  #Code Generation
32*1b3f573fSAndroid Build Coastguard Worker  if(protobuf_MODULE_COMPATIBLE) #Legacy Support
33*1b3f573fSAndroid Build Coastguard Worker    protobuf_generate_cpp(${example}_PROTO_SRCS ${example}_PROTO_HDRS ${${example}_PROTOS})
34*1b3f573fSAndroid Build Coastguard Worker    list(APPEND ${example}_SRCS ${${example}_PROTO_SRCS} ${${example}_PROTO_HDRS})
35*1b3f573fSAndroid Build Coastguard Worker  endif()
36*1b3f573fSAndroid Build Coastguard Worker
37*1b3f573fSAndroid Build Coastguard Worker  #Executable setup
38*1b3f573fSAndroid Build Coastguard Worker  set(executable_name ${example}_cpp)
39*1b3f573fSAndroid Build Coastguard Worker  add_executable(${executable_name} ${${example}_SRCS} ${${example}_PROTOS})
40*1b3f573fSAndroid Build Coastguard Worker  if(protobuf_MODULE_COMPATIBLE) #Legacy mode
41*1b3f573fSAndroid Build Coastguard Worker    target_include_directories(${executable_name} PUBLIC ${PROTOBUF_INCLUDE_DIRS})
42*1b3f573fSAndroid Build Coastguard Worker    target_link_libraries(${executable_name} ${PROTOBUF_LIBRARIES})
43*1b3f573fSAndroid Build Coastguard Worker  else()
44*1b3f573fSAndroid Build Coastguard Worker    target_link_libraries(${executable_name} protobuf::libprotobuf)
45*1b3f573fSAndroid Build Coastguard Worker    protobuf_generate(TARGET ${executable_name})
46*1b3f573fSAndroid Build Coastguard Worker  endif()
47*1b3f573fSAndroid Build Coastguard Worker
48*1b3f573fSAndroid Build Coastguard Workerendforeach()
49