project(movie C CXX) cmake_minimum_required(VERSION 3.1) set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD_REQUIRED on) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/../lib) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/../bin) # Setup Valgrind for cmake -D ExperimentalMemCheck find_program( MEMORYCHECK_COMMAND REQUIRED valgrind ) set( MEMORYCHECK_COMMAND_OPTIONS "--trace-children=yes --leak-check=full --show-leak-kinds=all" ) set( MEMORYCHECK_SUPPRESSIONS_FILE "${PROJECT_SOURCE_DIR}/valgrind_suppress.txt" ) include( CTest ) find_package( Threads ) find_package(Threads REQUIRED) find_package(GTest REQUIRED gtest>=1.7.0) FIND_LIBRARY(GMOCK_LIBRARY gmock /usr/local/lib/libgmock) find_package(Protobuf REQUIRED) include_directories(${PROTOBUF_INCLUDE_DIRS}) include_directories(/usr/local/include) # *************** Movie PBUF Library ********************* include_directories(${PROTOBUF_INCLUDE_DIRS}) include_directories(${CMAKE_CURRENT_BINARY_DIR}) protobuf_generate_cpp(MOVIE_PROTO_SRCS MOVIE_PROTO_HDRS movie.proto) add_library(movie_proto STATIC ${MOVIE_PROTO_SRCS} ${MOVIE_PROTO_HDRS}) target_link_libraries(movie_proto ${PROTOBUF_LIBRARIES}) # Specify here the include directories exported # by this library. Note the CMAKE_CURRENT_BINARY_DIR is the build dir. That's because the src and header files are generated in the build dir by protoc target_include_directories(movie_proto PUBLIC ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}) # ******************************************************** # *************** Libarary with Main that calls google::protobuf::ShutdownProtobufLibrary(); # # gtest_protobuf_main library # Use this main for GTtests that use protobuf to ensure protobuf library shutdown # add_library(gtest_protobuf_main STATIC gtestProtobufMain.cpp ) # ******************************************************** # # BasicProtoGtest # ADD_EXECUTABLE(BasicProtoGtest basic_proto_gtest.h basic_proto_gtest.cpp) TARGET_LINK_LIBRARIES(BasicProtoGtest gtest_protobuf_main ${PROTOBUF_LIBRARIES} ${GTEST_LIBRARIES} ${GMOCK_LIBRARY} ${CMAKE_THREAD_LIBS_INIT} movie_proto ) add_test(NAME BasicProtoGtest COMMAND BasicProtoGtest)