From 01c08209495ee397f4f0fe852e4e99c64e78ef06 Mon Sep 17 00:00:00 2001 From: Mattia Montanari Date: Mon, 28 Nov 2022 22:47:46 +0100 Subject: [PATCH] Fix cmake and compiler wwarnings --- CMakeLists.txt | 58 ++++++++++++++++++++++++++------------------------ 1 file changed, 30 insertions(+), 28 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f635f78..b243977 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,13 +20,22 @@ # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # # FOR A PARTICULAR PURPOSE. See GNU General Public License for details. # -cmake_minimum_required(VERSION 2.8) -cmake_policy(SET CMP0048 NEW) - +# User options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . option(BUILD_EXAMPLE "Build demo" ON) + +# CMake setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +cmake_minimum_required(VERSION 3.0) # You can downgrade to 2.8, but I don't maintain it anymore +cmake_policy(SET CMP0048 NEW) +cmake_policy(SET CMP0063 NEW) # Visibility of preset and hidden lines on shared libs + +set( CMAKE_C_VISIBILITY_PRESET hidden) +set( CMAKE_VISIBILITY_INLINES_HIDDEN TRUE) +set( CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) + +# Project setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . set(GK_VERSION_MAJOR 3) set(GK_VERSION_MINOR 0) -set(GK_VERSION_PATCH 0) +set(GK_VERSION_PATCH 3) project(lib_opengjk_ce LANGUAGES C @@ -35,53 +44,46 @@ project(lib_opengjk_ce VERSION ${GK_VERSION_MAJOR}.${GK_VERSION_MINOR}.${GK_VERSION_PATCH} ) -set( C_STANDARD 99) -set( CMAKE_CXX_VISIBILITY_PRESET hidden) -set( CMAKE_VISIBILITY_INLINES_HIDDEN 1) -set( CMAKE_POLICY_DEFAULT_CMP0079 NEW) -set( CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) -set( CMAKE_INCLUDE_CURRENT_DIR TRUE) - -# Set compile flags +# Compiler flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . message(STATUS "Compiler in use: ${CMAKE_C_COMPILER_ID}") -set( CMAKE_C_FLAGS_DEBUG "-O0 -g -Wall") +set( CMAKE_C_FLAGS_DEBUG "-O0 -g -Wall -Wunused") set( CMAKE_C_FLAGS_RELEASE "-O3 -Werror") if (CMAKE_C_COMPILER_ID STREQUAL "Clang") - # To use Clang, pass to cmake: -DCMAKE_C_COMPILER="clang" + set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") elseif (CMAKE_C_COMPILER_ID STREQUAL "GNU") - # To use Clang, pass to cmake: -DCMAKE_C_COMPILER="gcc" set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pedantic -Wunused-macros -Wno-unused-command-line-argument") elseif (CMAKE_C_COMPILER_ID STREQUAL "Intel") elseif (CMAKE_C_COMPILER_ID STREQUAL "MSVC") endif() -set( GK_PUBLIC_HEADER_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include) - -add_library(${PROJECT_NAME} +# Target . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +add_library( ${PROJECT_NAME} STATIC - ${CMAKE_CURRENT_SOURCE_DIR}/openGJK.c - ${GK_PUBLIC_HEADER_DIR}/openGJK/openGJK.h + ${CMAKE_CURRENT_SOURCE_DIR}/openGJK.c + ${CMAKE_CURRENT_SOURCE_DIR}/include/openGJK/openGJK.h +) + +target_include_directories( ${PROJECT_NAME} +PUBLIC +${CMAKE_CURRENT_SOURCE_DIR}/include +${CMAKE_CURRENT_BINARY_DIR} ) target_link_libraries(${PROJECT_NAME} PRIVATE m) -target_include_directories( - ${PROJECT_NAME} - PUBLIC - ${CMAKE_CURRENT_SOURCE_DIR}/include - ${CMAKE_CURRENT_BINARY_DIR} -) - set_target_properties(${PROJECT_NAME} PROPERTIES + C_STANDARD 11 PUBLIC_HEADER ${CMAKE_CURRENT_SOURCE_DIR}/include/openGJK/openGJK.h ) +# Build demo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . if(BUILD_EXAMPLE) add_subdirectory(examples/c) endif(BUILD_EXAMPLE) +# Install . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . if (UNIX) install(TARGETS ${PROJECT_NAME} PERMISSIONS WORLD_WRITE ) set(DESTDIR "/usr") @@ -91,6 +93,6 @@ if (UNIX) ) endif (UNIX) -# Wrap up feedback on setup +# Wrap up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . message(STATUS "Version : " ${CMAKE_PROJECT_VERSION} ) message(STATUS "Build type : " ${CMAKE_BUILD_TYPE} )