Browse Source

refactor: 提取预定义宏到base.h

SongZihuan 3 years ago
parent
commit
6867c6c323
5 changed files with 38 additions and 3 deletions
  1. 6 1
      CMakeLists.txt
  2. 29 0
      include/base.h.in
  3. 1 0
      include/tool/macro.h
  4. 1 1
      src/tool/file.c
  5. 1 1
      src/tool/time.c

+ 6 - 1
CMakeLists.txt

@@ -67,6 +67,7 @@ set(CMAKE_INSTALL_RPATH
 set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
 set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
 set(CMAKE_MACOSX_RPATH TRUE)
 set(CMAKE_MACOSX_RPATH TRUE)
 include_directories(${CMAKE_SOURCE_DIR}/include ${CMAKE_BINARY_DIR}/${INSTALL_INCLUDEDIR})  # 添加默认的include路径
 include_directories(${CMAKE_SOURCE_DIR}/include ${CMAKE_BINARY_DIR}/${INSTALL_INCLUDEDIR})  # 添加默认的include路径
+
 set(base_compile_definitions
 set(base_compile_definitions
     aFunVersion="${PROJECT_VERSION}"
     aFunVersion="${PROJECT_VERSION}"
     aFunDescription="${PROJECT_DESCRIPTION}"
     aFunDescription="${PROJECT_DESCRIPTION}"
@@ -86,21 +87,25 @@ set(base_compile_definitions
 
 
 if (WIN32 OR CYGWIN)
 if (WIN32 OR CYGWIN)
     list(APPEND base_compile_definitions aFunWIN32=1)
     list(APPEND base_compile_definitions aFunWIN32=1)
+    set(aFunWIN32 1)
 endif()
 endif()
 
 
 if (WIN32 AND NOT CYGWIN)
 if (WIN32 AND NOT CYGWIN)
     list(APPEND base_compile_definitions aFunWIN32_NO_CYGWIN=1)
     list(APPEND base_compile_definitions aFunWIN32_NO_CYGWIN=1)
+    set(aFunWIN32_NO_CYGWIN 1)
 endif()
 endif()
 
 
 if (CYGWIN)
 if (CYGWIN)
     list(APPEND base_compile_definitions aFunCYGWIN=1)
     list(APPEND base_compile_definitions aFunCYGWIN=1)
+    set(aFunCYGWIN 1)
 endif()
 endif()
 
 
 if (CMAKE_BUILD_TYPE STREQUAL Debug)
 if (CMAKE_BUILD_TYPE STREQUAL Debug)
     list(APPEND base_compile_definitions aFunDEBUG=1)
     list(APPEND base_compile_definitions aFunDEBUG=1)
+    set(aFunDEBUG 1)
 endif()
 endif()
 
 
-add_compile_definitions(${base_compile_definitions})
+configure_file(${CMAKE_SOURCE_DIR}/include/base.h.in ${CMAKE_BINARY_DIR}/${INSTALL_INCLUDEDIR}/base.h @ONLY)
 
 
 include(${CMAKE_CURRENT_LIST_DIR}/deps/deps.cmake)  # 安装依赖
 include(${CMAKE_CURRENT_LIST_DIR}/deps/deps.cmake)  # 安装依赖
 include(${CMAKE_CURRENT_LIST_DIR}/lang/hgt.cmake)  # 安装lang库
 include(${CMAKE_CURRENT_LIST_DIR}/lang/hgt.cmake)  # 安装lang库

+ 29 - 0
include/base.h.in

@@ -0,0 +1,29 @@
+/**
+ * 由CMake自动生成的宏定义头文件
+ */
+#ifndef AFUN_BASE_H_IN_H
+#define AFUN_BASE_H_IN_H
+
+#define aFunVersion "@PROJECT_VERSION@"
+#define aFunDescription "@PROJECT_DESCRIPTION@"
+#define systemName "@CMAKE_SYSTEM_NAME@"
+#define compilerID "@CMAKE_C_COMPILER_ID@"
+#define aFunMajorVersion @PROJECT_VERSION_MAJOR@
+#define aFunMinorVersion @PROJECT_VERSION_MINOR@
+#define aFunPatchVersion @PROJECT_VERSION_PATCH@
+#define aFunLogDir "@INSTALL_LOGDIR_NATIVE@"
+#define aFunVarLibDir "@INSTALL_LOCALSTATEDIR_NATIVE@"
+#define aFunLangDir "@INSTALL_LANGDIR_NATIVE@"
+#define aFunSharePrefix "@CMAKE_SHARED_LIBRARY_PREFIX@"
+#define aFunShareSuffix "@CMAKE_SHARED_LIBRARY_SUFFIX@"
+#define aFunStaticPrefix "@CMAKE_STATIC_LIBRARY_PREFIX@"
+#define aFunStaticSuffix "@CMAKE_STATIC_LIBRARY_SUFFIX@"
+#define aFunExeSuffix "@CMAKE_EXECUTABLE_SUFFIX@"
+
+
+#cmakedefine aFunWIN32
+#cmakedefine aFunWIN32_NO_CYGWIN
+#cmakedefine aFunCYGWIN
+#cmakedefine aFunDEBUG
+
+#endif //AFUN_BASE_H_IN_H

+ 1 - 0
include/tool/macro.h

@@ -8,6 +8,7 @@
 #include <stdbool.h>
 #include <stdbool.h>
 #include <inttypes.h>
 #include <inttypes.h>
 #include <stdarg.h>
 #include <stdarg.h>
+#include "base.h"
 
 
 #ifndef __bool_true_false_are_defined
 #ifndef __bool_true_false_are_defined
 #define bool int
 #define bool int

+ 1 - 1
src/tool/file.c

@@ -277,7 +277,7 @@ bool isCharUTF8(char *str) {
 FILE *fileOpen(char *path_, char *mode_) {
 FILE *fileOpen(char *path_, char *mode_) {
     if (STR_LEN(mode_) >= 5)
     if (STR_LEN(mode_) >= 5)
         return NULL;
         return NULL;
-#if aFunWIN32_NO_CYGWIN
+#ifdef aFunWIN32_NO_CYGWIN
     FILE *file = NULL;
     FILE *file = NULL;
     wchar_t *path = NULL;
     wchar_t *path = NULL;
     wchar_t mode[5];
     wchar_t mode[5];

+ 1 - 1
src/tool/time.c

@@ -32,7 +32,7 @@ char *getTime(time_t *t, char *format) {
         t = &tmp;
         t = &tmp;
 
 
     time (t);  // 获取时间戳
     time (t);  // 获取时间戳
-#if aFunWIN32_NO_CYGWIN
+#ifdef aFunWIN32_NO_CYGWIN
     struct tm lt;
     struct tm lt;
     if (localtime_s(&lt, t) != 0)
     if (localtime_s(&lt, t) != 0)
         return NULL;
         return NULL;