Bläddra i källkod

feat: 使用CMake定义SUFFIX和PREFIX宏

SongZihuan 3 år sedan
förälder
incheckning
35c0b2d069
4 ändrade filer med 24 tillägg och 14 borttagningar
  1. 6 1
      CMakeLists.txt
  2. 8 6
      include/tool/path.h
  3. 1 1
      lang/hgt.cmake
  4. 9 6
      src/core/core_init.c

+ 6 - 1
CMakeLists.txt

@@ -80,7 +80,12 @@ set(base_compile_definitions
     aFunPatchVersion=${PROJECT_VERSION_PATCH}
     aFunPatchVersion=${PROJECT_VERSION_PATCH}
     aFunLogDir="${INSTALL_LOGDIR_NATIVE}"
     aFunLogDir="${INSTALL_LOGDIR_NATIVE}"
     aFunVarLibDir="${INSTALL_LOCALSTATEDIR_NATIVE}"
     aFunVarLibDir="${INSTALL_LOCALSTATEDIR_NATIVE}"
-    aFunLangDir="${INSTALL_LANGDIR_NATIVE}")  # 默认的预定义宏
+    aFunLangDir="${INSTALL_LANGDIR_NATIVE}"
+    aFunSharePrefix="${CMAKE_SHARED_LIBRARY_PREFIX}"
+    aFunShareSuffix="${CMAKE_SHARED_LIBRARY_SUFFIX}"
+    aFunStaticPrefix="${CMAKE_STATIC_LIBRARY_PREFIX}"
+    aFunStaticSuffix="${CMAKE_STATIC_LIBRARY_SUFFIX}"
+    aFunExeSuffix="${CMAKE_EXECUTABLE_SUFFIX}")  # 默认的预定义宏
 
 
 if (WIN32 OR CYGWIN)
 if (WIN32 OR CYGWIN)
     list(APPEND base_compile_definitions aFunWIN32=1)
     list(APPEND base_compile_definitions aFunWIN32=1)

+ 8 - 6
include/tool/path.h

@@ -2,7 +2,7 @@
 #define AFUN_PATH_H
 #define AFUN_PATH_H
 
 
 /* 路径工具 */
 /* 路径工具 */
-#ifdef WIN32
+#ifdef aFunWIN32_NO_CYGWIN
 
 
 #define SEP "\\"
 #define SEP "\\"
 #define SEP_CH '\\'
 #define SEP_CH '\\'
@@ -14,10 +14,12 @@
 
 
 #endif
 #endif
 
 
-#ifdef aFunWIN32
-#define SHARED_MARK ".dll"
-#else
-#define SHARED_MARK ".so"
-#endif
+#define SHARED_PREFIX aFunSharePrefix
+#define SHARED_SUFFIX aFunShareSuffix
+
+#define STATIC_PREFIX aFunStaticPrefix
+#define STATIC_SUFFIX aFunStaticSuffix
+
+#define EXE_SUFFIX aFunExeSuffix
 
 
 #endif //AFUN_PATH_H
 #endif //AFUN_PATH_H

+ 1 - 1
lang/hgt.cmake

@@ -86,7 +86,7 @@ endfunction()
 build_lang()  # 使用函数防止 CMAKE_RUNTIME_OUTPUT_DIRECTORY 影响外部
 build_lang()  # 使用函数防止 CMAKE_RUNTIME_OUTPUT_DIRECTORY 影响外部
 
 
 add_custom_command(TARGET hgt-zh_cn
 add_custom_command(TARGET hgt-zh_cn
-                   COMMAND ${CMAKE_COMMAND} -E echo "$<TARGET_FILE_NAME:hgt-zh_cn>" ">>" "LANG"
+                   COMMAND ${CMAKE_COMMAND} -E echo "$<TARGET_FILE_BASE_NAME:hgt-zh_cn>" ">>" "LANG"
                    WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/${INSTALL_LANGDIR}"
                    WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/${INSTALL_LANGDIR}"
                    COMMENT "Creat file ${CMAKE_BINARY_DIR}/${INSTALL_LANGDIR}/LANG")
                    COMMENT "Creat file ${CMAKE_BINARY_DIR}/${INSTALL_LANGDIR}/LANG")
 
 

+ 9 - 6
src/core/core_init.c

@@ -53,24 +53,27 @@ bool aFunCoreInit(aFunCoreInitInfo *info) {
     writeDebugLog(aFunCoreLogger, "aFunCore var/lib path: %s", varlib_path);
     writeDebugLog(aFunCoreLogger, "aFunCore var/lib path: %s", varlib_path);
     writeDebugLog(aFunCoreLogger, "aFunCore lang path: %s", lang_path);
     writeDebugLog(aFunCoreLogger, "aFunCore lang path: %s", lang_path);
 
 
-    char LANG[100] = {0};
-    char *LANG_path = strJoin(lang_path, "LANG", false, false);
+    char LANG_path[218] = {0};
+    snprintf(LANG_path, 218, "%sLANG", lang_path);
+
     FILE *LANG_file = fopen(LANG_path, "r");
     FILE *LANG_file = fopen(LANG_path, "r");
     writeDebugLog(aFunCoreLogger, "LANG_path = %s", LANG_path);
     writeDebugLog(aFunCoreLogger, "LANG_path = %s", LANG_path);
     if (LANG_file != NULL) {
     if (LANG_file != NULL) {
+        char LANG[100] = {0};
         fgets(LANG, 100, LANG_file);
         fgets(LANG, 100, LANG_file);
         if (LANG[strlen(LANG) - 1] == '\n')
         if (LANG[strlen(LANG) - 1] == '\n')
             LANG[strlen(LANG) - 1] = NUL;  // 去除`\n`
             LANG[strlen(LANG) - 1] = NUL;  // 去除`\n`
         writeDebugLog(aFunCoreLogger, "LANG = %s", LANG);
         writeDebugLog(aFunCoreLogger, "LANG = %s", LANG);
 
 
-        char *LANG_lib = strJoin(lang_path, LANG, false, false);
+        char LANG_lib[218] = {0};
+        snprintf(LANG_lib, 218, "%s" SHARED_PREFIX "%s" SHARED_SUFFIX, lang_path, LANG);
         if (HT_initaFunGetText(LANG_lib) == 0)
         if (HT_initaFunGetText(LANG_lib) == 0)
-            writeDebugLog(aFunCoreLogger, "aFunCore lang init: %s", LANG_lib);
-        free(LANG_lib);
+            writeDebugLog(aFunCoreLogger, "aFunCore lang init success: %s", LANG_lib);
+        else
+            writeDebugLog(aFunCoreLogger, "aFunCore lang init failed: %s", LANG_lib);
         fclose(LANG_file);
         fclose(LANG_file);
     } else
     } else
         HT_initaFunGetText(NULL);
         HT_initaFunGetText(NULL);
-    free(LANG_path);
 
 
     return true;
     return true;
 }
 }