cpp
This commit is contained in:
		
							parent
							
								
									3c8c85819a
								
							
						
					
					
						commit
						22924f4583
					
				| @ -1,74 +1,497 @@ | ||||
| project(${JUDGE_TARGET_NAME}) | ||||
| cmake_minimum_required(VERSION 3.14.3) | ||||
| #cmake 3.14.3 首次发布于2019年3月14日 | ||||
| #add_compile_definitions()最低要3.12.0才支持 | ||||
| 
 | ||||
| set(MSG_NOTE "${MSG_NOTE} [${PROJECT_NAME}]") | ||||
| message("${MSG_NOTE} this project name ${PROJECT_NAME}") | ||||
| project(judge2.0) # LANGUAGES C CXX | ||||
| 
 | ||||
| add_compile_definitions(JUDGE_COMPILE_TARGET_SDK)  #编译目标工程定义 | ||||
| #add_compile_definitions(JUDGE_SHARED_EXPORT) | ||||
| #add_compile_definitions(JUDGE_SHARED_IMPORT) | ||||
| set(MSG_INFO  "***[judge-cmake-info]***") | ||||
| set(MSG_NOTE  "***[judge-cmake-note]***") | ||||
| set(MSG_WARN  "***[judge-cmake-warn]***") | ||||
| set(MSG_ERROR "***[judge-cmake-error]***") | ||||
| # "NOTICE": 缺省时默认的选项,表示正常输出到控制台的重要提示信息 | ||||
| # "WARNING": 表示输出到控制台的警告信息,但不会中断CMake的运行 | ||||
| # "STATUS": 表示正常输出到控制台的一般提示性信息,和CMake自动输出的提示信息一样,每一条自动以--开头,通常不需要关注 | ||||
| # "FATAL_ERROR": 表示致命错误,CMake通常不会执行到此,如果执行到了这条语句,就会输出这里的信息并停止生成构建系统 | ||||
| 
 | ||||
| set(JUDGE_INCLUDE_CURRENT | ||||
|     ${PROJECT_SOURCE_DIR} | ||||
| ) | ||||
| message("${MSG_NOTE} ******************************************************") | ||||
| 
 | ||||
| file(GLOB_RECURSE JUDGE_SOURCE_CURRENT | ||||
|     ${PROJECT_SOURCE_DIR}/*.h* | ||||
|     ${PROJECT_SOURCE_DIR}/*.c* | ||||
| ) | ||||
| # 启用项目文件夹功能。当这个属性被设置为ON时,CMake会根据项目的目录结构自动在生成的项目文件中创建文件夹,以更好地组织项目文件。 | ||||
| set_property(GLOBAL PROPERTY USE_FOLDERS ON) | ||||
| set(CMAKE_CXX_STANDARD 17) # 注意:windows下可以是C++11 linux下必须是C++14 gtest linux下要C++14 | ||||
| set(CMAKE_CXX_STANDARD_REQUIRED ON) | ||||
| set(EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/bin) | ||||
| set(LIBRARY_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/bin) | ||||
| set(CMAKE_INCLUDE_CURRENT_DIR ON)   # 在查找头文件时包括当前目录 | ||||
| 
 | ||||
| set(JUDGE_LIB_DIR_CURRENT | ||||
| #设置编译输出评判SDK库名称 | ||||
| set(JUDGE_TARGET_NAME "JudgeSdk") | ||||
| 
 | ||||
| ) | ||||
| 
 | ||||
| set(JUDGE_LIB_FILE_CURRENT | ||||
| 
 | ||||
| ) | ||||
| 
 | ||||
| source_group(\\ FILES ${JUDGE_SOURCE_CURRENT}) | ||||
| 
 | ||||
| include_directories( | ||||
|     ${JUDGE_INCLUDE} | ||||
|     ${JUDGE_INCLUDE_PLATFORM} | ||||
|     ${JUDGE_INCLUDE_CURRENT} | ||||
| ) | ||||
| 
 | ||||
| link_directories( | ||||
|     ${JUDGE_LIB_DIR} | ||||
|     ${JUDGE_LIB_DIR_PLATFORM} | ||||
|     ${JUDGE_LIB_DIR_CURRENT} | ||||
| ) | ||||
| 
 | ||||
| if(BUILD_SHARED_LIBS) | ||||
|     message("${MSG_NOTE} BUILD_SHARED_LIBS=${BUILD_SHARED_LIBS} build shared dll") | ||||
|     add_compile_definitions(JUDGE_SHARED_EXPORT)  #cmake version must be greater than 3.12.0 | ||||
| #编译参数设置编译静态库还是动态库 | ||||
| #除非使用者主动设置BUILD_SHARED_LIBS=OFF才会生成静态库,否则全部编译输出动态库, | ||||
| #BUILD_SHARED_LIBS不设置或者设置成BUILD_SHARED_LIBS=ON也输出动态库 | ||||
| message("${MSG_NOTE} BUILD_SHARED_LIBS=${BUILD_SHARED_LIBS}") | ||||
| if(NOT DEFINED BUILD_SHARED_LIBS) | ||||
|     option(BUILD_SHARED_LIBS "" ON) | ||||
|     message("${MSG_NOTE} NOT DEFINED BUILD_SHARED_LIBS=${BUILD_SHARED_LIBS}") | ||||
| else() | ||||
|     message("${MSG_NOTE} BUILD_SHARED_LIBS=${BUILD_SHARED_LIBS} build static lib") | ||||
|     message("${MSG_NOTE} IS DEFINED BUILD_SHARED_LIBS=${BUILD_SHARED_LIBS}") | ||||
| endif() | ||||
| 
 | ||||
| # BUILD_SHARED_LIBS ON的时候生成的是隐式调用的动态库 如果生成显示调用动态库 加上SHARED参数 | ||||
| add_library(${JUDGE_TARGET_NAME} | ||||
|     ${JUDGE_SOURCE} | ||||
|     ${JUDGE_SOURCE_PLATFORM} | ||||
|     ${JUDGE_SOURCE_CURRENT} | ||||
| ) | ||||
| #set(CMAKE_DEBUG_POSTFIX "_d") | ||||
| 
 | ||||
| # PUBLIC    在public后面的库会被Link到你的target中,并且里面的符号也会被导出,提供给第三方使用。 | ||||
| # PRIVATE   在private后面的库仅被link到你的target中,并且终结掉,第三方不能感知你调了啥库 | ||||
| # INTERFACE 在interface后面引入的库不会被链接到你的target中,只会导出符号 | ||||
| # 本质上可以使用public 来解决,可以减少坑。 | ||||
| target_link_libraries(${JUDGE_TARGET_NAME} PUBLIC | ||||
|     ${JUDGE_LIB_FILE} | ||||
|     ${JUDGE_LIB_FILE_PLATFORM} | ||||
|     ${JUDGE_LIB_FILE_CURRENT} | ||||
| ) | ||||
| #打开编译函数执行耗时统计 | ||||
| #add_compile_definitions(JUDGE_USE_TCMALLOC) | ||||
| #option(JUDGE_USE_TCMALLOC "" OFF) | ||||
| 
 | ||||
| # 设置动态库的版本号 | ||||
| #set(CMAKE_SHARED_LIBRARY_SONAME_VERSION 1) | ||||
| 
 | ||||
| #CMAKE_STATIC_LIBRARY_SUFFIX STREQUAL "lib" OR | ||||
| if(CMAKE_SHARED_LIBRARY_PREFIX STREQUAL lib) | ||||
|     set_target_properties(${JUDGE_TARGET_NAME} PROPERTIES OUTPUT_NAME ${JUDGE_TARGET_NAME}) #VERSION 1.0.0  SOVERSION 1.0 | ||||
| #set(CMAKE_SYSTEM_NAME OHOS) | ||||
| #设置编译的系统平台 # JUDGE_OS_WIN JUDGE_OS_LINUX JUDGE_OS_OHOS JUDGE_OS_ANDROID | ||||
| message("${MSG_NOTE} current system name is ${CMAKE_SYSTEM_NAME}") | ||||
| if(CMAKE_SYSTEM_NAME MATCHES Windows) | ||||
|     option(JUDGE_OS_WIN "" ON) | ||||
| elseif(CMAKE_SYSTEM_NAME MATCHES Linux) | ||||
|     option(JUDGE_OS_LINUX "" ON) | ||||
| elseif(CMAKE_SYSTEM_NAME MATCHES OHOS) | ||||
|     option(JUDGE_OS_OHOS "" ON) | ||||
| elseif(CMAKE_SYSTEM_NAME MATCHES Android) | ||||
|     option(JUDGE_OS_ANDROID "" ON) | ||||
| else() | ||||
|     set_target_properties(${JUDGE_TARGET_NAME} PROPERTIES OUTPUT_NAME lib${JUDGE_TARGET_NAME}) #VERSION 1.0.0  SOVERSION 1.0 | ||||
|     message(FATAL_ERROR "${MSG_ERROR} unknown operating system platform!") | ||||
|     return() | ||||
| endif() | ||||
| 
 | ||||
| if(JUDGE_OS_WIN) | ||||
|     add_compile_definitions(JUDGE_OS_WIN) | ||||
| elseif(JUDGE_OS_LINUX) | ||||
|     add_compile_definitions(JUDGE_OS_LINUX) | ||||
| elseif(JUDGE_OS_OHOS) | ||||
|     add_compile_definitions(JUDGE_OS_OHOS) | ||||
| elseif(JUDGE_OS_ANDROID) | ||||
|     add_compile_definitions(JUDGE_OS_ANDROID) | ||||
| else() | ||||
|     message(FATAL_ERROR "${MSG_ERROR} unknown operating system platform!") | ||||
|     return() | ||||
| endif() | ||||
| 
 | ||||
| message("${MSG_NOTE} now compiler is ${CMAKE_C_COMPILER_ID}") | ||||
| # 不同编译器编译属性设置 | ||||
| if(CMAKE_C_COMPILER_ID MATCHES MSVC) | ||||
|     add_compile_definitions(JUDGE_COMPILER_MSVC)  #option(JUDGE_COMPILER_MSVC "" ON) | ||||
| elseif(CMAKE_C_COMPILER_ID MATCHES Clang) | ||||
|     add_compile_definitions(JUDGE_COMPILER_CLANG) #option(JUDGE_COMPILER_CLANG "" ON) | ||||
| elseif(CMAKE_C_COMPILER_ID MATCHES GNU) | ||||
|     add_compile_definitions(JUDGE_COMPILER_GCC)   #option(JUDGE_COMPILER_GCC "" ON) | ||||
| else() | ||||
|     message(FATAL_ERROR "${MSG_ERROR} unknown compiler!") | ||||
|     return() | ||||
| endif() | ||||
| 
 | ||||
| message("${MSG_NOTE} CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}") | ||||
| ##鸿蒙和安卓强制release模式编译 | ||||
| if(JUDGE_OS_OHOS OR JUDGE_OS_ANDROID) | ||||
|     set(CMAKE_BUILD_TYPE "Release") | ||||
| endif() | ||||
| #只有主动设置为Debug模式编译才采用Debug模式 | ||||
| if(CMAKE_BUILD_TYPE AND (CMAKE_BUILD_TYPE STREQUAL "Debug")) | ||||
|     message("${MSG_NOTE} CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} debug") | ||||
|     set(CMAKE_BUILD_TYPE "Debug") | ||||
|     add_compile_definitions(_DEBUG) | ||||
| else() | ||||
|     message("${MSG_NOTE} CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} release") | ||||
|     set(CMAKE_BUILD_TYPE "Release") | ||||
|     add_compile_definitions(NDEBUG) | ||||
| endif() | ||||
| 
 | ||||
| # 不同操作系统编译属性设置 | ||||
| # UNIX 与 CMAKE_HOST_UNIX 等价 | ||||
| # WIN32 与 CMAKE_HOST_WIN32 等价 | ||||
| if(WIN32) | ||||
|     message("${MSG_NOTE} host is windows system.") | ||||
|     add_compile_options(/W3 /wd4100 /wd4309 /wd4068 /wd4244 /wd4626 /wd4251 /wd4267 /wd4065 /wd4189 /wd4717 /wd4505) | ||||
| 
 | ||||
|     # C2026: 字符串太大,已截断尾部字符(/Zc:strictStrings 或 /Tc编译器开关) | ||||
| 
 | ||||
|     set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} $ENV{CFLAGS} /bigobj") | ||||
|     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} $ENV{CXXFLAGS} /bigobj") | ||||
| 
 | ||||
|     set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /MTd /Od") # /Od 禁止优化编译 | ||||
|     set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /MT /O2") | ||||
|     set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd /Od") | ||||
|     set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT /O2") # /MD | ||||
| 
 | ||||
|     set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /INCREMENTAL:YES" ) | ||||
|     #set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:104857600") | ||||
| 
 | ||||
| 
 | ||||
| elseif(UNIX) | ||||
|     message("${MSG_NOTE} host is linux system.") | ||||
| 
 | ||||
|     add_compile_options( | ||||
|         -W -Wall | ||||
|         -Wno-unused-function | ||||
|         -Wno-unused-parameter | ||||
|         -Wno-unused-variable | ||||
|         -Wno-unused-but-set-variable | ||||
|       # -Wno-tautological-constant-out-of-range-compare    ## for android | ||||
|       # -Wno-suggest-override | ||||
|       # -Winconsistent-missing-override | ||||
|       # -Wno-sign-compare | ||||
|       # -Wno-comment       #  当'/*'出现在 '/* ... */'注释中,或者'\'出现在'// ...'注释结尾处时,使用-Wcomment会给出警告。 | ||||
|     ) | ||||
| 
 | ||||
|     if(CMAKE_C_COMPILER_ID STREQUAL "Clang") | ||||
|         add_compile_options(-Wno-tautological-constant-out-of-range-compare)    ## for android | ||||
|     endif() | ||||
| 
 | ||||
|     #add_compile_options(-Wa,-mbig-obj) | ||||
|     #add_compile_options(-static-libstdc++ -static-libgcc) | ||||
|     set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} $ENV{CFLAGS} -no-pie -pthread") | ||||
|     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} $ENV{CXXFLAGS} -no-pie -pthread") | ||||
|     # PIE是一种生成地址无关可执行程序 #用gpertools检测性能和内存泄露会用到,不然定位不到 | ||||
| 
 | ||||
|     set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0 -g -ggdb") | ||||
|     set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3") | ||||
|     set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -g -ggdb") | ||||
|     set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3") | ||||
| 
 | ||||
|     # -fPIC选项的生效阶段在编译阶段,使用-fPIC选项编译的.o文件会生成位置无关的代码, | ||||
|     # 通常在linux下用gcc编译动态库时都会加上一个-fPIC选项来生成位置无关代码。 | ||||
|     # 如果你的静态库可能会被动态库使用,那么静态库编译的时候就也需要-fPIC选项。 | ||||
|     if(BUILD_SHARED_LIBS) | ||||
|         add_compile_options(-fPIC) | ||||
|     endif() | ||||
| 
 | ||||
|     # -w 的意思是关闭编译时的警告,也就是编译后不显示任何warning,因为有时在编译之后编译器会显示一些例如数据转换之类的警告,这些警告是我们平时可以忽略的。 | ||||
|     # -Wall 选项意思是编译后显示所有警告。 | ||||
|     # -W 选项类似-Wall,会显示警告,但是只显示编译器认为会出现错误的警告。比如函数返回类型void,return 0; | ||||
| 
 | ||||
|     #OPTION(USE_32BITS "Compile for 32bits processors(linux only)" OFF) | ||||
|     #set(CMAKE_C_FLAGS_DEBUG "$ENV{CFLAGS} -O0 -Wall -g -ggdb") | ||||
|     #set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb") | ||||
| 
 | ||||
| else() | ||||
|     message(FATAL_ERROR "${MSG_ERROR} unknown system!") | ||||
|     return() | ||||
| endif() | ||||
| 
 | ||||
| if(JUDGE_OS_WIN) | ||||
|     message("${MSG_NOTE} now compiler platform JUDGE_OS_WIN") | ||||
| 
 | ||||
|     set(JUDGE_INCLUDE_PLATFORM | ||||
|         ) | ||||
| 
 | ||||
|     file(GLOB_RECURSE JUDGE_SOURCE_PLATFORM | ||||
|         ) | ||||
| 
 | ||||
|     set(JUDGE_LIB_DIR_PLATFORM | ||||
| 
 | ||||
|         ) | ||||
| 
 | ||||
|     set(JUDGE_LIB_FILE_PLATFORM | ||||
| 
 | ||||
|         ) | ||||
| 
 | ||||
| elseif(JUDGE_OS_LINUX) | ||||
|     message("${MSG_NOTE} now compiler platform JUDGE_OS_LINUX") | ||||
| 
 | ||||
|     set(JUDGE_INCLUDE_PLATFORM | ||||
|         ) | ||||
| 
 | ||||
|     file(GLOB_RECURSE JUDGE_SOURCE_PLATFORM | ||||
|         ) | ||||
| 
 | ||||
|     set(JUDGE_LIB_DIR_PLATFORM | ||||
| 
 | ||||
|         ) | ||||
| 
 | ||||
|     set(JUDGE_LIB_FILE_PLATFORM | ||||
|             stdc++fs | ||||
|         ) | ||||
| 
 | ||||
| elseif(JUDGE_OS_OHOS) | ||||
|     message("${MSG_NOTE} now compiler platform JUDGE_OS_OHOS") | ||||
| 
 | ||||
|     set(JUDGE_INCLUDE_PLATFORM | ||||
|         ${CMAKE_SYSROOT}/usr/include/ace/xcomponent | ||||
|         ${CMAKE_SYSROOT}/usr/include/native_window | ||||
|         ${CMAKE_SOURCE_DIR}/sdk/api/js | ||||
|         ${CMAKE_SOURCE_DIR}/third/harmony/include #本地开发看代码用的 | ||||
|         ${CMAKE_SOURCE_DIR}/third/harmony/include/ace #本地开发看代码用的 | ||||
|         ${CMAKE_SOURCE_DIR}/third/harmony/include/ace/xcomponent #本地开发看代码用的 | ||||
|         ${CMAKE_SOURCE_DIR}/third/harmony/include/native_window #本地开发看代码用的 | ||||
|         ) | ||||
| 
 | ||||
|     file(GLOB_RECURSE JUDGE_SOURCE_PLATFORM | ||||
|         ${CMAKE_SOURCE_DIR}/sdk/api/js/*.* | ||||
|         ) | ||||
| 
 | ||||
|     set(JUDGE_LIB_DIR_PLATFORM | ||||
|         #${CMAKE_SOURCE_DIR}/third/harmony | ||||
|         #aarch64-linux-ohos arm-linux-ohos x86_64-linux-ohos | ||||
|         ) | ||||
| 
 | ||||
|     set(JUDGE_LIB_FILE_PLATFORM | ||||
|         ace_napi.z | ||||
|         uv | ||||
|         ace_ndk.z | ||||
|         native_window  #//for-surface-nativeXComponent | ||||
|         hilog_ndk.z | ||||
|         ) | ||||
| 
 | ||||
| elseif(JUDGE_OS_ANDROID) | ||||
|     message("${MSG_NOTE} now compiler platform JUDGE_OS_ANDROID") | ||||
| 
 | ||||
|     set(JUDGE_INCLUDE_PLATFORM | ||||
|         ${CMAKE_SOURCE_DIR}/third/android/include   #本地开发看代码用的 | ||||
|         ${CMAKE_SOURCE_DIR}/sdk/api/jni | ||||
|     ) | ||||
| 
 | ||||
|     file(GLOB_RECURSE JUDGE_SOURCE_PLATFORM | ||||
|         ${CMAKE_SOURCE_DIR}/sdk/api/jni/*.* | ||||
|     ) | ||||
| 
 | ||||
|     set(JUDGE_LIB_DIR_PLATFORM | ||||
| 
 | ||||
|     ) | ||||
| 
 | ||||
|     set(JUDGE_LIB_FILE_PLATFORM | ||||
|         android | ||||
|         log | ||||
|     ) | ||||
| 
 | ||||
| else() | ||||
|     message("${MSG_ERROR} unknown operating system!") | ||||
|     return() | ||||
| endif() | ||||
| 
 | ||||
| 
 | ||||
| #********************************************************* | ||||
| 
 | ||||
| #设置全局包含的库文件路径 | ||||
| set(JUDGE_LIB_DIR | ||||
| 
 | ||||
|     ) | ||||
| 
 | ||||
| #设置全局包含的库文件名称 | ||||
| set(JUDGE_LIB_FILE | ||||
| 
 | ||||
|     ) | ||||
| 
 | ||||
| #设置全局包含的头文件 | ||||
| set(JUDGE_INCLUDE | ||||
|     #${CMAKE_CURRENT_SOURCE_DIR} | ||||
|     #${PROJECT_SOURCE_DIR} | ||||
|     #${CMAKE_SOURCE_DIR} | ||||
|     ${CMAKE_SOURCE_DIR}/third | ||||
|     ${CMAKE_SOURCE_DIR}/third/tinyxml2-9.0.0 | ||||
|     ${CMAKE_SOURCE_DIR}/third/jsoncpp-1.9.5 | ||||
|     ${CMAKE_SOURCE_DIR}/third/inih | ||||
|     ${CMAKE_SOURCE_DIR}/third/cpp-md5 | ||||
|     ${CMAKE_SOURCE_DIR}/third/libb64 | ||||
|     ${CMAKE_SOURCE_DIR}/third/AES | ||||
|     ${CMAKE_SOURCE_DIR}/third/CImg-v.3.2.6 | ||||
|     ${CMAKE_SOURCE_DIR}/third/nlohmann | ||||
|     ${CMAKE_SOURCE_DIR}/third/nlohmann/detail | ||||
|     ${CMAKE_SOURCE_DIR}/third/nlohmann/detail/conversions | ||||
|     ${CMAKE_SOURCE_DIR}/third/nlohmann/detail/input | ||||
|     ${CMAKE_SOURCE_DIR}/third/nlohmann/detail/iterators | ||||
|     ${CMAKE_SOURCE_DIR}/third/nlohmann/detail/meta | ||||
|     ${CMAKE_SOURCE_DIR}/third/nlohmann/detail/output | ||||
|     ${CMAKE_SOURCE_DIR}/third/nlohmann/thirdparty/hedley | ||||
| 
 | ||||
|     #${CMAKE_SOURCE_DIR}/sdk | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/api | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/api/cxx | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/api/js | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/api/jni | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/api/include | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/api/platform | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/common | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/utility | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/parser | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/graphic | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/database | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/database/mark | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/database/sysset | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/database/carinfo | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/database/sysparm | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/database/mappoint | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/database/iteminfo | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/exam | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/track | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/survey | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/survey/car | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/survey/sub2 | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/survey/sub3 | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/judge | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/judge/sub2 | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/judge/sub3 | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/assistdrive | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/assistdrive/navigate | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/assistdrive/track | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/assistdrive/track/libTrack | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/assistdrive/track/pathTrack | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/assistdrive/track/pathTrack/purp | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/assistdrive/track/teachTrack | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/assistdrive/track/trackInfo | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/assistdrive/track/trackMode | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/assistdrive/util | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/assistdrive/wirecontrol | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/assistdrive/field | ||||
|     ) | ||||
| 
 | ||||
| #设置全局包含的源文件 | ||||
| file(GLOB_RECURSE JUDGE_SOURCE | ||||
|     ${CMAKE_SOURCE_DIR}/third/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/third/tinyxml2-9.0.0/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/third/jsoncpp-1.9.5/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/third/inih/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/third/cpp-md5/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/third/libb64/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/third/AES/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/third/CImg-v.3.2.6/*.* | ||||
| 	${CMAKE_SOURCE_DIR}/third/nlohmann/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/third/nlohmann/detail/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/third/nlohmann/detail/conversions/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/third/nlohmann/detail/input/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/third/nlohmann/detail/iterators/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/third/nlohmann/detail/meta/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/third/nlohmann/detail/output/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/third/nlohmann/thirdparty/hedley/*.* | ||||
| 
 | ||||
|     #${CMAKE_SOURCE_DIR}/sdk/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/api/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/api/cxx/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/api/js/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/api/jni/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/api/include/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/api/platform/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/common/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/utility/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/parser/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/graphic/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/database/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/database/mark/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/database/sysset/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/database/carinfo/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/database/sysparm/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/database/mappoint/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/exam/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/track/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/survey/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/survey/car/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/survey/sub2/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/survey/sub3/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/judge/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/judge/sub2/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/judge/sub3/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/assistdrive/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/assistdrive/track/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/assistdrive/util/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/assistdrive/wirecontrol/*.* | ||||
|     ${CMAKE_SOURCE_DIR}/sdk/assistdrive/field/*.* | ||||
|     ) | ||||
| 
 | ||||
| #设置编译的包含的目标工程 | ||||
| add_subdirectory(${CMAKE_SOURCE_DIR}/sdk) | ||||
| if(JUDGE_OS_WIN OR JUDGE_OS_LINUX) | ||||
|     add_subdirectory(${CMAKE_SOURCE_DIR}/toolkit) | ||||
|     add_subdirectory(${CMAKE_SOURCE_DIR}/test) | ||||
| endif() | ||||
| 
 | ||||
| #***************************************************** | ||||
| ## 下面是输出一些当前编译参数系统相关的信息 | ||||
| #***************************************************** | ||||
| 
 | ||||
| function(showOutputInfo) | ||||
| 
 | ||||
|     message(STATUS "${MSG_INFO} ****************system info**************************************") | ||||
| 
 | ||||
|     message(STATUS "${MSG_INFO} ENV{CFLAGS}=$ENV{CFLAGS}") | ||||
|     message(STATUS "${MSG_INFO} ENV{CXXFLAGS=$ENV{CXXFLAGS}") | ||||
| 
 | ||||
|     message(STATUS "${MSG_INFO} CMAKE_DEFAULT_BUILD_TYPE = ${CMAKE_DEFAULT_BUILD_TYPE}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_C_COMPILER = ${CMAKE_C_COMPILER}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_CXX_COMPILER = ${CMAKE_CXX_COMPILER}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_C_COMPILER_ID = ${CMAKE_C_COMPILER_ID}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_CXX_COMPILER_ID = ${CMAKE_CXX_COMPILER_ID}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_C_COMPILER_VERSION = ${CMAKE_C_COMPILER_VERSION}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_CXX_COMPILER_VERSION = ${CMAKE_CXX_COMPILER_VERSION}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_SYSTEM = ${CMAKE_SYSTEM}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_SYSTEM_NAME = ${CMAKE_SYSTEM_NAME}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_SYSTEM_VERSION = ${CMAKE_SYSTEM_VERSION}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_SYSTEM_PROCESSOR = ${CMAKE_SYSTEM_PROCESSOR}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_HOST_SYSTEM = ${CMAKE_HOST_SYSTEM}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_HOST_SYSTEM_NAME = ${CMAKE_HOST_SYSTEM_NAME}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_HOST_SYSTEM_VERSION = ${CMAKE_HOST_SYSTEM_VERSION}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_HOST_SYSTEM_PROCESSOR = ${CMAKE_HOST_SYSTEM_PROCESSOR}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_SIZEOF_VOID_P = ${CMAKE_SIZEOF_VOID_P}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_MINIMUM_REQUIRED_VERSION = ${CMAKE_MINIMUM_REQUIRED_VERSION}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_VERSION = ${CMAKE_VERSION}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_CXX_STANDARD = ${CMAKE_CXX_STANDARD}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_CXX_STANDARD_REQUIRED = ${CMAKE_CXX_STANDARD_REQUIRED}") | ||||
| 
 | ||||
| 
 | ||||
|     # 运行时目标文件(exe、dll)的输出位置 | ||||
|     message(STATUS "${MSG_INFO} CMAKE_RUNTIME_OUTPUT_DIRECTORY = ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}") | ||||
|     # 存档目标文件(lib、a)的输出位置 | ||||
|     message(STATUS "${MSG_INFO} CMAKE_ARCHIVE_OUTPUT_DIRECTORY = ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}") | ||||
| 
 | ||||
|     message(STATUS "${MSG_INFO} CMAKE_BINARY_DIR = ${CMAKE_BINARY_DIR}") | ||||
| 
 | ||||
|     message(STATUS "${MSG_INFO} CMAKE_C_FLAGS = ${CMAKE_C_FLAGS}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_C_FLAGS_DEBUG = ${CMAKE_C_FLAGS_DEBUG}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_C_FLAGS_RELEASE = ${CMAKE_C_FLAGS_RELEASE}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_C_FLAGS_MINSIZEREL = ${CMAKE_C_FLAGS_MINSIZEREL}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_C_FLAGS_RELWITHDEBINFO = ${CMAKE_C_FLAGS_RELWITHDEBINFO}") | ||||
| 
 | ||||
|     message(STATUS "${MSG_INFO} CMAKE_CXX_FLAGS = ${CMAKE_CXX_FLAGS}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_CXX_FLAGS_DEBUG = ${CMAKE_CXX_FLAGS_DEBUG}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_CXX_FLAGS_RELEASE = ${CMAKE_CXX_FLAGS_RELEASE}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_CXX_FLAGS_MINSIZEREL = ${CMAKE_CXX_FLAGS_MINSIZEREL}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_CXX_FLAGS_RELWITHDEBINFO = ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") | ||||
| 
 | ||||
|     message(STATUS "${MSG_INFO} CMAKE_EXE_LINKER_FLAGS = ${CMAKE_EXE_LINKER_FLAGS}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_EXE_LINKER_FLAGS_DEBUG = ${CMAKE_EXE_LINKER_FLAGS_DEBUG}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_EXE_LINKER_FLAGS_MINSIZEREL = ${CMAKE_EXE_LINKER_FLAGS_MINSIZEREL}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_EXE_LINKER_FLAGS_RELEASE = ${CMAKE_EXE_LINKER_FLAGS_RELEASE}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO = ${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO}") | ||||
| 
 | ||||
|     message(STATUS "${MSG_INFO} CMAKE_MODULE_LINKER_FLAGS = ${CMAKE_MODULE_LINKER_FLAGS}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_MODULE_LINKER_FLAGS_DEBUG = ${CMAKE_MODULE_LINKER_FLAGS_DEBUG}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL = ${CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_MODULE_LINKER_FLAGS_RELEASE = ${CMAKE_MODULE_LINKER_FLAGS_RELEASE}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO = ${CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO}") | ||||
| 
 | ||||
|     message(STATUS "${MSG_INFO} CMAKE_SHARED_LINKER_FLAGS = ${CMAKE_SHARED_LINKER_FLAGS}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_SHARED_LINKER_FLAGS_DEBUG = ${CMAKE_SHARED_LINKER_FLAGS_DEBUG}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL = ${CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_SHARED_LINKER_FLAGS_RELEASE = ${CMAKE_SHARED_LINKER_FLAGS_RELEASE}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO = ${CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO}") | ||||
| 
 | ||||
|     message(STATUS "${MSG_INFO} CMAKE_STATIC_LINKER_FLAGS = ${CMAKE_STATIC_LINKER_FLAGS}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_STATIC_LINKER_FLAGS_DEBUG = ${CMAKE_STATIC_LINKER_FLAGS_DEBUG}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL = ${CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_STATIC_LINKER_FLAGS_RELEASE = ${CMAKE_STATIC_LINKER_FLAGS_RELEASE}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO = ${CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO}") | ||||
| 
 | ||||
|     message(STATUS "${MSG_INFO} CMAKE_C_COMPILER = ${CMAKE_C_COMPILER}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_CXX_COMPILER = ${CMAKE_CXX_COMPILER}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_C_COMPILER_ID = ${CMAKE_C_COMPILER_ID}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_CXX_COMPILER_ID = ${CMAKE_CXX_COMPILER_ID}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_C_COMPILER_VERSION = ${CMAKE_C_COMPILER_VERSION}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_CXX_COMPILER_VERSION = ${CMAKE_CXX_COMPILER_VERSION}") | ||||
| 
 | ||||
|     message(STATUS "${MSG_INFO} CMAKE_STATIC_LIBRARY_PREFIX = ${CMAKE_STATIC_LIBRARY_PREFIX}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_STATIC_LIBRARY_SUFFIX = ${CMAKE_STATIC_LIBRARY_SUFFIX}") | ||||
|     message(STATUS "${MSG_INFO} CMAKE_SHARED_LIBRARY_PREFIX = ${CMAKE_SHARED_LIBRARY_PREFIX}") #链接的共享库的前缀 | ||||
|     message(STATUS "${MSG_INFO} CMAKE_SHARED_LIBRARY_SUFFIX = ${CMAKE_SHARED_LIBRARY_SUFFIX}") #链接的共享库的后缀 | ||||
|     message(STATUS "${MSG_INFO} CMAKE_SHARED_MODULE_PREFIX = ${CMAKE_SHARED_MODULE_PREFIX}") #链接的可加载模块的前缀 | ||||
| 
 | ||||
| 
 | ||||
|     message(STATUS "${MSG_INFO} ****************system info**************************************") | ||||
| endfunction() | ||||
| 
 | ||||
| showOutputInfo() | ||||
| 
 | ||||
| message("${MSG_NOTE} configuration finish...") | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										53
									
								
								entry/src/main/cpp/napi_init.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								entry/src/main/cpp/napi_init.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,53 @@ | ||||
| #include "napi/native_api.h" | ||||
| 
 | ||||
| static napi_value Add(napi_env env, napi_callback_info info) | ||||
| { | ||||
|     size_t argc = 2; | ||||
|     napi_value args[2] = {nullptr}; | ||||
| 
 | ||||
|     napi_get_cb_info(env, info, &argc, args , nullptr, nullptr); | ||||
| 
 | ||||
|     napi_valuetype valuetype0; | ||||
|     napi_typeof(env, args[0], &valuetype0); | ||||
| 
 | ||||
|     napi_valuetype valuetype1; | ||||
|     napi_typeof(env, args[1], &valuetype1); | ||||
| 
 | ||||
|     double value0; | ||||
|     napi_get_value_double(env, args[0], &value0); | ||||
| 
 | ||||
|     double value1; | ||||
|     napi_get_value_double(env, args[1], &value1); | ||||
| 
 | ||||
|     napi_value sum; | ||||
|     napi_create_double(env, value0 + value1, &sum); | ||||
| 
 | ||||
|     return sum; | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| EXTERN_C_START | ||||
| static napi_value Init(napi_env env, napi_value exports) | ||||
| { | ||||
|     napi_property_descriptor desc[] = { | ||||
|         { "add", nullptr, Add, nullptr, nullptr, nullptr, napi_default, nullptr } | ||||
|     }; | ||||
|     napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc); | ||||
|     return exports; | ||||
| } | ||||
| EXTERN_C_END | ||||
| 
 | ||||
| static napi_module demoModule = { | ||||
|     .nm_version = 1, | ||||
|     .nm_flags = 0, | ||||
|     .nm_filename = nullptr, | ||||
|     .nm_register_func = Init, | ||||
|     .nm_modname = "entry", | ||||
|     .nm_priv = ((void*)0), | ||||
|     .reserved = { 0 }, | ||||
| }; | ||||
| 
 | ||||
| extern "C" __attribute__((constructor)) void RegisterEntryModule(void) | ||||
| { | ||||
|     napi_module_register(&demoModule); | ||||
| } | ||||
							
								
								
									
										74
									
								
								entry/src/main/cpp/sdk/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								entry/src/main/cpp/sdk/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,74 @@ | ||||
| project(${JUDGE_TARGET_NAME}) | ||||
| 
 | ||||
| set(MSG_NOTE "${MSG_NOTE} [${PROJECT_NAME}]") | ||||
| message("${MSG_NOTE} this project name ${PROJECT_NAME}") | ||||
| 
 | ||||
| add_compile_definitions(JUDGE_COMPILE_TARGET_SDK)  #编译目标工程定义 | ||||
| #add_compile_definitions(JUDGE_SHARED_EXPORT) | ||||
| #add_compile_definitions(JUDGE_SHARED_IMPORT) | ||||
| 
 | ||||
| set(JUDGE_INCLUDE_CURRENT | ||||
|     ${PROJECT_SOURCE_DIR} | ||||
| ) | ||||
| 
 | ||||
| file(GLOB_RECURSE JUDGE_SOURCE_CURRENT | ||||
|     ${PROJECT_SOURCE_DIR}/*.h* | ||||
|     ${PROJECT_SOURCE_DIR}/*.c* | ||||
| ) | ||||
| 
 | ||||
| set(JUDGE_LIB_DIR_CURRENT | ||||
| 
 | ||||
| ) | ||||
| 
 | ||||
| set(JUDGE_LIB_FILE_CURRENT | ||||
| 
 | ||||
| ) | ||||
| 
 | ||||
| source_group(\\ FILES ${JUDGE_SOURCE_CURRENT}) | ||||
| 
 | ||||
| include_directories( | ||||
|     ${JUDGE_INCLUDE} | ||||
|     ${JUDGE_INCLUDE_PLATFORM} | ||||
|     ${JUDGE_INCLUDE_CURRENT} | ||||
| ) | ||||
| 
 | ||||
| link_directories( | ||||
|     ${JUDGE_LIB_DIR} | ||||
|     ${JUDGE_LIB_DIR_PLATFORM} | ||||
|     ${JUDGE_LIB_DIR_CURRENT} | ||||
| ) | ||||
| 
 | ||||
| if(BUILD_SHARED_LIBS) | ||||
|     message("${MSG_NOTE} BUILD_SHARED_LIBS=${BUILD_SHARED_LIBS} build shared dll") | ||||
|     add_compile_definitions(JUDGE_SHARED_EXPORT)  #cmake version must be greater than 3.12.0 | ||||
| else() | ||||
|     message("${MSG_NOTE} BUILD_SHARED_LIBS=${BUILD_SHARED_LIBS} build static lib") | ||||
| endif() | ||||
| 
 | ||||
| # BUILD_SHARED_LIBS ON的时候生成的是隐式调用的动态库 如果生成显示调用动态库 加上SHARED参数 | ||||
| add_library(${JUDGE_TARGET_NAME} | ||||
|     ${JUDGE_SOURCE} | ||||
|     ${JUDGE_SOURCE_PLATFORM} | ||||
|     ${JUDGE_SOURCE_CURRENT} | ||||
| ) | ||||
| 
 | ||||
| # PUBLIC    在public后面的库会被Link到你的target中,并且里面的符号也会被导出,提供给第三方使用。 | ||||
| # PRIVATE   在private后面的库仅被link到你的target中,并且终结掉,第三方不能感知你调了啥库 | ||||
| # INTERFACE 在interface后面引入的库不会被链接到你的target中,只会导出符号 | ||||
| # 本质上可以使用public 来解决,可以减少坑。 | ||||
| target_link_libraries(${JUDGE_TARGET_NAME} PUBLIC | ||||
|     ${JUDGE_LIB_FILE} | ||||
|     ${JUDGE_LIB_FILE_PLATFORM} | ||||
|     ${JUDGE_LIB_FILE_CURRENT} | ||||
| ) | ||||
| 
 | ||||
| # 设置动态库的版本号 | ||||
| #set(CMAKE_SHARED_LIBRARY_SONAME_VERSION 1) | ||||
| 
 | ||||
| #CMAKE_STATIC_LIBRARY_SUFFIX STREQUAL "lib" OR | ||||
| if(CMAKE_SHARED_LIBRARY_PREFIX STREQUAL lib) | ||||
|     set_target_properties(${JUDGE_TARGET_NAME} PROPERTIES OUTPUT_NAME ${JUDGE_TARGET_NAME}) #VERSION 1.0.0  SOVERSION 1.0 | ||||
| else() | ||||
|     set_target_properties(${JUDGE_TARGET_NAME} PROPERTIES OUTPUT_NAME lib${JUDGE_TARGET_NAME}) #VERSION 1.0.0  SOVERSION 1.0 | ||||
| endif() | ||||
| 
 | ||||
Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user