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}]") | project(judge2.0) # LANGUAGES C CXX | ||||||
| message("${MSG_NOTE} this project name ${PROJECT_NAME}") |  | ||||||
| 
 | 
 | ||||||
| add_compile_definitions(JUDGE_COMPILE_TARGET_SDK)  #编译目标工程定义 | set(MSG_INFO  "***[judge-cmake-info]***") | ||||||
| #add_compile_definitions(JUDGE_SHARED_EXPORT) | set(MSG_NOTE  "***[judge-cmake-note]***") | ||||||
| #add_compile_definitions(JUDGE_SHARED_IMPORT) | set(MSG_WARN  "***[judge-cmake-warn]***") | ||||||
|  | set(MSG_ERROR "***[judge-cmake-error]***") | ||||||
|  | # "NOTICE": 缺省时默认的选项,表示正常输出到控制台的重要提示信息 | ||||||
|  | # "WARNING": 表示输出到控制台的警告信息,但不会中断CMake的运行 | ||||||
|  | # "STATUS": 表示正常输出到控制台的一般提示性信息,和CMake自动输出的提示信息一样,每一条自动以--开头,通常不需要关注 | ||||||
|  | # "FATAL_ERROR": 表示致命错误,CMake通常不会执行到此,如果执行到了这条语句,就会输出这里的信息并停止生成构建系统 | ||||||
| 
 | 
 | ||||||
| set(JUDGE_INCLUDE_CURRENT | message("${MSG_NOTE} ******************************************************") | ||||||
|     ${PROJECT_SOURCE_DIR} |  | ||||||
| ) |  | ||||||
| 
 | 
 | ||||||
| file(GLOB_RECURSE JUDGE_SOURCE_CURRENT | # 启用项目文件夹功能。当这个属性被设置为ON时,CMake会根据项目的目录结构自动在生成的项目文件中创建文件夹,以更好地组织项目文件。 | ||||||
|     ${PROJECT_SOURCE_DIR}/*.h* | set_property(GLOBAL PROPERTY USE_FOLDERS ON) | ||||||
|     ${PROJECT_SOURCE_DIR}/*.c* | 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") | ||||||
| 
 | 
 | ||||||
| ) | #编译参数设置编译静态库还是动态库 | ||||||
| 
 | #除非使用者主动设置BUILD_SHARED_LIBS=OFF才会生成静态库,否则全部编译输出动态库, | ||||||
| set(JUDGE_LIB_FILE_CURRENT | #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) | ||||||
| source_group(\\ FILES ${JUDGE_SOURCE_CURRENT}) |     message("${MSG_NOTE} NOT DEFINED BUILD_SHARED_LIBS=${BUILD_SHARED_LIBS}") | ||||||
| 
 |  | ||||||
| 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() | 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() | endif() | ||||||
| 
 | 
 | ||||||
| # BUILD_SHARED_LIBS ON的时候生成的是隐式调用的动态库 如果生成显示调用动态库 加上SHARED参数 | #set(CMAKE_DEBUG_POSTFIX "_d") | ||||||
| add_library(${JUDGE_TARGET_NAME} |  | ||||||
|     ${JUDGE_SOURCE} |  | ||||||
|     ${JUDGE_SOURCE_PLATFORM} |  | ||||||
|     ${JUDGE_SOURCE_CURRENT} |  | ||||||
| ) |  | ||||||
| 
 | 
 | ||||||
| # PUBLIC    在public后面的库会被Link到你的target中,并且里面的符号也会被导出,提供给第三方使用。 | #打开编译函数执行耗时统计 | ||||||
| # PRIVATE   在private后面的库仅被link到你的target中,并且终结掉,第三方不能感知你调了啥库 | #add_compile_definitions(JUDGE_USE_TCMALLOC) | ||||||
| # INTERFACE 在interface后面引入的库不会被链接到你的target中,只会导出符号 | #option(JUDGE_USE_TCMALLOC "" OFF) | ||||||
| # 本质上可以使用public 来解决,可以减少坑。 |  | ||||||
| target_link_libraries(${JUDGE_TARGET_NAME} PUBLIC |  | ||||||
|     ${JUDGE_LIB_FILE} |  | ||||||
|     ${JUDGE_LIB_FILE_PLATFORM} |  | ||||||
|     ${JUDGE_LIB_FILE_CURRENT} |  | ||||||
| ) |  | ||||||
| 
 | 
 | ||||||
| # 设置动态库的版本号 | #set(CMAKE_SYSTEM_NAME OHOS) | ||||||
| #set(CMAKE_SHARED_LIBRARY_SONAME_VERSION 1) | #设置编译的系统平台 # JUDGE_OS_WIN JUDGE_OS_LINUX JUDGE_OS_OHOS JUDGE_OS_ANDROID | ||||||
| 
 | message("${MSG_NOTE} current system name is ${CMAKE_SYSTEM_NAME}") | ||||||
| #CMAKE_STATIC_LIBRARY_SUFFIX STREQUAL "lib" OR | if(CMAKE_SYSTEM_NAME MATCHES Windows) | ||||||
| if(CMAKE_SHARED_LIBRARY_PREFIX STREQUAL lib) |     option(JUDGE_OS_WIN "" ON) | ||||||
|     set_target_properties(${JUDGE_TARGET_NAME} PROPERTIES OUTPUT_NAME ${JUDGE_TARGET_NAME}) #VERSION 1.0.0  SOVERSION 1.0 | 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() | 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() | 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