From ef2f2ca532b54978ce64ba34c6b365fc92542f08 Mon Sep 17 00:00:00 2001 From: hyzboy Date: Mon, 26 Nov 2018 15:58:50 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0cmake=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmake/compiler.cmake | 42 +++++++++++++++++++++++++++++++++++++++++ cmake/output_path.cmake | 29 ++++++++++++++++++++++++++++ cmake/system_bit.cmake | 31 ++++++++++++++++++++++++++++++ cmake/version.cmake | 25 ++++++++++++++++++++++++ 4 files changed, 127 insertions(+) create mode 100644 cmake/compiler.cmake create mode 100644 cmake/output_path.cmake create mode 100644 cmake/system_bit.cmake create mode 100644 cmake/version.cmake diff --git a/cmake/compiler.cmake b/cmake/compiler.cmake new file mode 100644 index 00000000..6cb624f6 --- /dev/null +++ b/cmake/compiler.cmake @@ -0,0 +1,42 @@ +macro(set_compiler_param) + + IF(WIN32) + + SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /MDd") + SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MDd") + + SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /MD") + SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MD") + + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++14") + + ELSE() + IF(NOT ANDROID) + IF(APPLE) + SET(USE_CLANG ON) + ELSE() + OPTION(USE_CLANG OFF) + ENDIF() + + if(USE_CLANG) + SET(CMAKE_C_COMPILER clang) + SET(CMAKE_CXX_COMPILER clang++) + endif() + ENDIF() + + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c11") + + SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -ggdb3") + SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -ggdb3") + + SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Ofast") + SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Ofast") + ENDIF() + + MESSAGE("C Compiler: " ${CMAKE_C_COMPILER}) + MESSAGE("C++ Compiler: " ${CMAKE_CXX_COMPILER}) + MESSAGE("C Flag: " ${CMAKE_C_FLAGS}) + MESSAGE("C++ Flag: " ${CMAKE_CXX_FLAGS}) + +endmacro() diff --git a/cmake/output_path.cmake b/cmake/output_path.cmake new file mode 100644 index 00000000..3cb0a89a --- /dev/null +++ b/cmake/output_path.cmake @@ -0,0 +1,29 @@ +macro(set_output_directory) + + IF(ANDROID) + SET(OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/out/android/${ANDROID_ABI}) + ELSEIF(IOS) + SET(OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/out/iOS/${IOS_PLATFORM}) + ELSE() + IF(WIN32) + SET(USE_GUI ON) + ENDIF() + + SET(OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/out/${CMAKE_SYSTEM_NAME}_${HGL_BITS}) + ENDIF() + + MESSAGE("SYSTEM NAME: " ${CMAKE_SYSTEM_NAME}) + MESSAGE("OUTPUT DIRECTORY: " ${OUTPUT_DIRECTORY}) + + SET(OUTPUT_DIRECTORY_DEBUG ${OUTPUT_DIRECTORY}_Debug) + SET(OUTPUT_DIRECTORY_RELEASE ${OUTPUT_DIRECTORY}_Release) + + SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${OUTPUT_DIRECTORY_DEBUG}) + SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${OUTPUT_DIRECTORY_DEBUG}) + SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${OUTPUT_DIRECTORY_DEBUG}) + + SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${OUTPUT_DIRECTORY_RELEASE}) + SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${OUTPUT_DIRECTORY_RELEASE}) + SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${OUTPUT_DIRECTORY_RELEASE}) + +endmacro() diff --git a/cmake/system_bit.cmake b/cmake/system_bit.cmake new file mode 100644 index 00000000..cf0d8b36 --- /dev/null +++ b/cmake/system_bit.cmake @@ -0,0 +1,31 @@ +macro(check_system_bits) + + IF(APPLE) + SET(HGL_BITS 64) + ELSE() + IF(ANDROID) + if(ANDROID_ABI MATCHES ".*64.*") + SET(HGL_BITS 64) + else() + SET(HGL_BITS 32) + endif() + ELSE() + IF(CMAKE_SIZEOF_VOID_P EQUAL 8) + SET(HGL_BITS 64) + ELSE() + SET(HGL_BITS 32) + ENDIF() + endif() + endif() + + IF(HGL_BITS EQUAL 32) + add_definitions(-DHGL_32_BITS) + add_definitions(-DHGL_POINTER_UINT=uint32) + ELSE() + add_definitions(-DHGL_64_BITS) + add_definitions(-DHGL_POINTER_UINT=uint64) + ENDIF() + + Message("System is ${HGL_BITS} Bit") + +endmacro() diff --git a/cmake/version.cmake b/cmake/version.cmake new file mode 100644 index 00000000..090f70d3 --- /dev/null +++ b/cmake/version.cmake @@ -0,0 +1,25 @@ +macro(check_system_version) + + message("Host system: " ${CMAKE_HOST_SYSTEM}) + message("Host system name: " ${CMAKE_HOST_SYSTEM_NAME}) + message("Host system version: " ${CMAKE_HOST_SYSTEM_VERSION}) + + message("Compile features: " ${CMAKE_CXX_COMPILE_FEATURES}) + message("Compile Flags: " ${CMAKE_C_FLAGS}) + message("C++ Compile Flags: " ${CMAKE_CXX_FLAGS}) + message("Build type: " ${CMAKE_BUILD_TYPE}) + + add_definitions(-DHGL_HOST_SYSTEM="${CMAKE_HOST_SYSTEM}") + + add_definitions(-DHGL_COMPILE_C_FLAGS="${CMAKE_C_FLAGS}") + add_definitions(-DHGL_COMPILE_CXX_FLAGS="${CMAKE_CXX_FLAGS}") + + add_definitions(-DCMAKE_VERSION="${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}") + + MESSAGE("C Compile Features: " ${CMAKE_C_COMPILE_FEATURES}) + MESSAGE("C++ Compile Features: " ${CMAKE_CXX_COMPILE_FEATURES}) + + # add_definitions(-DHGL_COMPILE_C_FEATURES="${CMAKE_C_COMPILE_FEATURES}") + # add_definitions(-DHGL_COMPILE_CXX_FEATURES="${CMAKE_CXX_COMPILE_FEATURES}") + +endmacro()