1- cmake_minimum_required (VERSION 3.12 )
1+ cmake_minimum_required (VERSION 3.11 )
22project (c89stringutils VERSION 0.0.2 LANGUAGES C)
33
44set (CMAKE_C_VISIBILITY_PRESET hidden)
55set (CMAKE_VISIBILITY_INLINES_HIDDEN YES )
66set (CMAKE_C_STANDARD 90)
77
88add_library ("${PROJECT_NAME} _compiler_flags" INTERFACE )
9- target_compile_features ("${PROJECT_NAME} _compiler_flags" INTERFACE "c_std_${CMAKE_C_STANDARD} " )
10-
11- # add compiler warning flags just when building this project via
12- # the BUILD_INTERFACE genex
13- set (gcc_like "$<COMPILE_LANG_AND_ID:C,CXX,ARMClang,AppleClang,Clang,GNU,LCC>" )
14- set (msvc "$<COMPILE_LANG_AND_ID:C,CXX,MSVC>" )
15- target_compile_options (
16- "${PROJECT_NAME} _compiler_flags"
17- INTERFACE
18- "$<${gcc_like} :$<BUILD_INTERFACE:-Wshadow;-Wformat=2;-Wall;-pedantic>>"
19- "$<${msvc} :$<BUILD_INTERFACE:-W3;-WX;-Zi;-permissive->>"
20- )
21-
9+ message (STATUS "MSVC_VERSION = ${MSVC_VERSION} " )
10+ if (NOT DEFINED MSVC_VERSION OR MSVC_VERSION STRGREATER "1900" ) # 2015
11+ target_compile_features ("${PROJECT_NAME} _compiler_flags" INTERFACE "c_std_${CMAKE_C_STANDARD} " )
12+ elseif (MSVC_VERSION STRLESS_EQUAL "1900" AND NOT EXISTS "${CMAKE_BINARY_DIR} /c89stringutils_export.h" )
13+ file (COPY "${CMAKE_SOURCE_DIR} /c89stringutils/c89stringutils_export_pregen.h"
14+ DESTINATION "${CMAKE_BINARY_DIR} " )
15+ file (RENAME "${CMAKE_BINARY_DIR} /c89stringutils_export_pregen.h"
16+ "${CMAKE_BINARY_DIR} /c89stringutils_export.h" )
17+ endif ()
18+ if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.15" )
19+ # add compiler warning flags just when building this project via
20+ # the BUILD_INTERFACE genex
21+ set (gcc_like "$<COMPILE_LANG_AND_ID:C,CXX,ARMClang,AppleClang,Clang,GNU,LCC>" )
22+ set (msvc "$<COMPILE_LANG_AND_ID:C,CXX,MSVC>" )
23+ target_compile_options (
24+ "${PROJECT_NAME} _compiler_flags"
25+ INTERFACE
26+ "$<${gcc_like} :$<BUILD_INTERFACE:-Wshadow;-Wformat=2;-Wall;-pedantic>>"
27+ "$<${msvc} :$<BUILD_INTERFACE:-W3;-WX;-Zi;-permissive->>"
28+ )
29+ endif (CMAKE_VERSION VERSION_GREATER_EQUAL "3.15" )
2230# Set the build directories
23- set (CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR} /bin" )
24- set (CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR} /lib" )
25-
31+ if (MSVC )
32+ set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR} " )
33+ set (CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR} " )
34+ set (CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR} " )
35+ else ()
36+ set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR} /lib" )
37+ set (CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR} /bin" )
38+ set (CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR} /lib" )
39+ endif ()
2640# configure a header file to pass the version number only
2741configure_file (
2842 "${CMAKE_CURRENT_SOURCE_DIR} /cmake/config.h.in"
@@ -44,7 +58,7 @@ include(GNUInstallDirs)
4458
4559install (
4660 FILES "${PROJECT_BINARY_DIR} /${PROJECT_NAME} Config.h"
47- TYPE "INCLUDE "
61+ DESTINATION " ${CMAKE_INSTALL_INCLUDEDIR} "
4862)
4963include (InstallRequiredSystemLibraries)
5064set (CPACK_BUNDLE_NAME "${PROJECT_NAME} " )
0 commit comments