CMakeLists.txt 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. cmake_minimum_required(VERSION 2.8)
  2. project(protobuf C CXX)
  3. option(BUILD_TESTING "Build tests" ON)
  4. option(BUILD_SHARED_LIBS "Build Shared Libraries" OFF)
  5. if (MSVC)
  6. option(ZLIB "Build with zlib support" OFF)
  7. endif (MSVC)
  8. add_definitions(-DGOOGLE_PROTOBUF_CMAKE_BUILD)
  9. find_package(Threads REQUIRED)
  10. if (CMAKE_USE_PTHREADS_INIT)
  11. add_definitions(-DHAVE_PTHREAD)
  12. endif (CMAKE_USE_PTHREADS_INIT)
  13. if (MSVC)
  14. if (ZLIB)
  15. set(HAVE_ZLIB 1)
  16. find_path(ZLIB_INCLUDE_DIRECTORIES zlib.h ${protobuf_SOURCE_DIR})
  17. find_library(ZLIB_LIBRARIES zdll ${protobuf_SOURCE_DIR})
  18. else (ZLIB)
  19. set(HAVE_ZLIB 0)
  20. endif (ZLIB)
  21. else (MSVC)
  22. find_package(ZLIB)
  23. if (ZLIB_FOUND)
  24. set(HAVE_ZLIB 1)
  25. else (ZLIB_FOUND)
  26. set(HAVE_ZLIB 0)
  27. # Explicitly set these to empty (override NOT_FOUND) so cmake doesn't
  28. # complain when we use them later.
  29. set(ZLIB_INCLUDE_DIRECTORIES)
  30. set(ZLIB_LIBRARIES)
  31. endif (ZLIB_FOUND)
  32. endif (MSVC)
  33. if (HAVE_ZLIB)
  34. add_definitions(-DHAVE_ZLIB)
  35. endif (HAVE_ZLIB)
  36. if (MSVC)
  37. if (BUILD_SHARED_LIBS)
  38. add_definitions(-DPROTOBUF_USE_DLLS)
  39. endif (BUILD_SHARED_LIBS)
  40. add_definitions(/wd4244 /wd4267 /wd4018 /wd4355 /wd4800 /wd4251 /wd4996 /wd4146 /wd4305)
  41. endif (MSVC)
  42. if (MSVC)
  43. string(REPLACE "/" "\\" PROTOBUF_SOURCE_WIN32_PATH ${protobuf_SOURCE_DIR})
  44. string(REPLACE "/" "\\" PROTOBUF_BINARY_WIN32_PATH ${protobuf_BINARY_DIR})
  45. configure_file(extract_includes.bat.in extract_includes.bat)
  46. endif (MSVC)
  47. get_filename_component(protobuf_source_dir ${protobuf_SOURCE_DIR} PATH)
  48. include_directories(
  49. ${ZLIB_INCLUDE_DIRECTORIES}
  50. ${protobuf_BINARY_DIR}
  51. ${protobuf_source_dir}/src)
  52. if (MSVC)
  53. # Add the "lib" prefix for generated .lib outputs.
  54. set(LIB_PREFIX lib)
  55. else (MSVC)
  56. # When building with "make", "lib" prefix will be added automatically by
  57. # the build tool.
  58. set(LIB_PREFIX)
  59. endif (MSVC)
  60. include(libprotobuf-lite.cmake)
  61. include(libprotobuf.cmake)
  62. include(libprotoc.cmake)
  63. include(protoc.cmake)
  64. if (BUILD_TESTING)
  65. include(tests.cmake)
  66. endif (BUILD_TESTING)