mirror of
https://github.com/eclipse-openvehicle-api/openvehicle-api.git
synced 2026-02-05 15:18:45 +00:00
128 lines
5.7 KiB
CMake
128 lines
5.7 KiB
CMake
|
|
# Enforce CMake version 3.20
|
||
|
|
cmake_minimum_required (VERSION 3.20)
|
||
|
|
cmake_policy (VERSION 3.20)
|
||
|
|
|
||
|
|
# Define project
|
||
|
|
project(vapi_framework_examples VERSION 1.0 LANGUAGES CXX)
|
||
|
|
|
||
|
|
# Use C++17 support
|
||
|
|
set(CMAKE_CXX_STANDARD 17)
|
||
|
|
|
||
|
|
# Libary symbols are hidden by default
|
||
|
|
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
|
||
|
|
|
||
|
|
# Re-set target directories
|
||
|
|
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY $<1:${CMAKE_BINARY_DIR}/lib>)
|
||
|
|
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY $<1:${CMAKE_BINARY_DIR}/bin>)
|
||
|
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY $<1:${CMAKE_BINARY_DIR}/bin>)
|
||
|
|
|
||
|
|
# Get Google Test from github
|
||
|
|
include(FetchContent)
|
||
|
|
# Fetch the Google Test library from GitHub.
|
||
|
|
FetchContent_Declare(
|
||
|
|
googletest
|
||
|
|
GIT_REPOSITORY https://github.com/google/googletest.git
|
||
|
|
GIT_TAG v1.17.0
|
||
|
|
)
|
||
|
|
|
||
|
|
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) # For Windows: Prevent overriding the parent project's compiler/linker settings
|
||
|
|
|
||
|
|
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
|
||
|
|
endif()
|
||
|
|
|
||
|
|
FetchContent_MakeAvailable(googletest)
|
||
|
|
|
||
|
|
add_library(GTest::GTest INTERFACE IMPORTED)
|
||
|
|
add_library(GMock::GMock INTERFACE IMPORTED)
|
||
|
|
target_link_libraries(GTest::GTest INTERFACE gtest_main)
|
||
|
|
target_link_libraries(GMock::GMock INTERFACE gmock_main)
|
||
|
|
|
||
|
|
# Default C++ settings
|
||
|
|
if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
|
||
|
|
message("Use MSVC compiler...")
|
||
|
|
add_compile_options(/W4 /WX /wd4996 /wd4127 /permissive- /Zc:rvalueCast)
|
||
|
|
add_compile_definitions(_SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING UNICODE _UNICODE)
|
||
|
|
else()
|
||
|
|
# There are some versions of GCC that produce bogus warnings for -Wstringop-overflow (e.g. version 9.4 warns, 11.4 not - changing
|
||
|
|
# the compile order without changing the logical behavior, will produce different results).
|
||
|
|
# See also: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100477
|
||
|
|
# And https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115074
|
||
|
|
# Suppress this warning.
|
||
|
|
add_compile_options(-Werror -Wall -Wextra -Wshadow -Wpedantic -Wunreachable-code -fno-common -fPIC -ggdb -pthread -Wno-error=stringop-overflow)
|
||
|
|
add_link_options(-pthread)
|
||
|
|
if (WIN32)
|
||
|
|
message("Use g++ compiler under Windows (mingw)...")
|
||
|
|
add_compile_definitions(UNICODE _UNICODE main=wmain)
|
||
|
|
add_link_options(-municode)
|
||
|
|
else()
|
||
|
|
message("Use g++ compiler...")
|
||
|
|
endif()
|
||
|
|
endif()
|
||
|
|
|
||
|
|
set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
|
||
|
|
set(THREADS_PREFER_PTHREAD_FLAG TRUE)
|
||
|
|
find_package(Threads REQUIRED)
|
||
|
|
|
||
|
|
# Check for the environment variable for the V-API runtime framework
|
||
|
|
if (NOT DEFINED SDV_FRAMEWORK_RUNTIME)
|
||
|
|
if (NOT DEFINED ENV{SDV_FRAMEWORK_RUNTIME})
|
||
|
|
message( FATAL_ERROR "The environment variable SDV_FRAMEWORK_RUNTIME needs to be pointing to the SDV V-API framework location!")
|
||
|
|
endif()
|
||
|
|
set (SDV_FRAMEWORK_RUNTIME "$ENV{SDV_FRAMEWORK_RUNTIME}")
|
||
|
|
endif()
|
||
|
|
message("SDV_FRAMEWORK_RUNTIME set to ${SDV_FRAMEWORK_RUNTIME}")
|
||
|
|
|
||
|
|
# Check for the environment variable for the V-API component installation directory
|
||
|
|
if (NOT DEFINED SDV_COMPONENT_INSTALL)
|
||
|
|
if (NOT DEFINED ENV{SDV_COMPONENT_INSTALL})
|
||
|
|
message( FATAL_ERROR "The environment variable SDV_COMPONENT_INSTALL needs to be pointing to the SDV V-API component installation location!")
|
||
|
|
endif()
|
||
|
|
set (SDV_COMPONENT_INSTALL "$ENV{SDV_COMPONENT_INSTALL}")
|
||
|
|
endif()
|
||
|
|
message("SDV_COMPONENT_INSTALL set to ${SDV_COMPONENT_INSTALL}")
|
||
|
|
|
||
|
|
# Check for the existance of the V-API development tools
|
||
|
|
if (NOT DEFINED SDV_FRAMEWORK_DEV_TOOLS)
|
||
|
|
if (NOT DEFINED ENV{SDV_FRAMEWORK_DEV_TOOLS})
|
||
|
|
message( FATAL_ERROR "The environment variable SDV_FRAMEWORK_DEV_TOOLS needs to be pointing to the SDV V-API development tools location!")
|
||
|
|
endif()
|
||
|
|
set (SDV_FRAMEWORK_DEV_TOOLS "$ENV{SDV_FRAMEWORK_DEV_TOOLS}")
|
||
|
|
endif()
|
||
|
|
message("SDV_FRAMEWORK_DEV_TOOLS set to ${SDV_FRAMEWORK_DEV_TOOLS}")
|
||
|
|
if (NOT DEFINED SDV_FRAMEWORK_DEV_INCLUDE)
|
||
|
|
if (NOT DEFINED ENV{SDV_FRAMEWORK_DEV_INCLUDE})
|
||
|
|
message( FATAL_ERROR "The environment variable SDV_FRAMEWORK_DEV_INCLUDE needs to be pointing to the SDV V-API development include files location!")
|
||
|
|
endif()
|
||
|
|
set (SDV_FRAMEWORK_DEV_INCLUDE "$ENV{SDV_FRAMEWORK_DEV_INCLUDE}")
|
||
|
|
endif()
|
||
|
|
message("SDV_FRAMEWORK_DEV_INCLUDE set to ${SDV_FRAMEWORK_DEV_INCLUDE}")
|
||
|
|
if (WIN32)
|
||
|
|
set (SDV_IDL_COMPILER "${SDV_FRAMEWORK_DEV_TOOLS}/sdv_idl_compiler.exe")
|
||
|
|
set (SDV_DBC_UTIL "${SDV_FRAMEWORK_DEV_TOOLS}/sdv_dbc_util.exe")
|
||
|
|
set (SDV_VSS_UTIL "${SDV_FRAMEWORK_DEV_TOOLS}/sdv_vss_util.exe")
|
||
|
|
set (SDV_PACKAGER "${SDV_FRAMEWORK_DEV_TOOLS}/sdv_packager.exe")
|
||
|
|
else()
|
||
|
|
set (SDV_IDL_COMPILER "${SDV_FRAMEWORK_DEV_TOOLS}/sdv_idl_compiler")
|
||
|
|
set (SDV_DBC_UTIL "${SDV_FRAMEWORK_DEV_TOOLS}/sdv_dbc_util")
|
||
|
|
set (SDV_VSS_UTIL "${SDV_FRAMEWORK_DEV_TOOLS}/sdv_vss_util")
|
||
|
|
set (SDV_PACKAGER "${SDV_FRAMEWORK_DEV_TOOLS}/sdv_packager")
|
||
|
|
endif()
|
||
|
|
if (NOT EXISTS ${SDV_IDL_COMPILER})
|
||
|
|
message( FATAL_ERROR "The SDV V-API IDL compiler is missing! \nDoes the SDV_FRAMEWORK_DEV_TOOLS environment variable have the correct path? \nIt is set to ${SDV_IDL_COMPILER}")
|
||
|
|
endif()
|
||
|
|
if (NOT EXISTS "${SDV_DBC_UTIL}")
|
||
|
|
message( FATAL_ERROR "The SDV V-API DBC utility is missing! \nDoes the SDV_FRAMEWORK_DEV_TOOLS environment variable have the correct path? \nIt is set to ${SDV_IDL_COMPILER}")
|
||
|
|
endif()
|
||
|
|
if (NOT EXISTS "${SDV_VSS_UTIL}")
|
||
|
|
message( FATAL_ERROR "The SDV V-API VSS utility is missing! \nDoes the SDV_FRAMEWORK_DEV_TOOLS environment variable have the correct path? \nIt is set to ${SDV_IDL_COMPILER}")
|
||
|
|
endif()
|
||
|
|
if (NOT EXISTS "${SDV_PACKAGER}")
|
||
|
|
message( FATAL_ERROR "The SDV V-API installation packager utility is missing! \nDoes the SDV_FRAMEWORK_DEV_TOOLS environment variable have the correct path? \nIt is set to ${SDV_IDL_COMPILER}")
|
||
|
|
endif()
|
||
|
|
|
||
|
|
add_subdirectory(dbc_util)
|
||
|
|
add_subdirectory(vss_util)
|
||
|
|
add_subdirectory(test_vss)
|
||
|
|
|