This commit is contained in:
lixiao 2024-09-04 11:25:43 +08:00
parent 3c8c85819a
commit 22924f4583
438 changed files with 137235 additions and 60 deletions

View File

@ -1,74 +1,497 @@
project(${JUDGE_TARGET_NAME}) cmake_minimum_required(VERSION 3.14.3)
#cmake 3.14.3 2019314
#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 # ONCMake
${PROJECT_SOURCE_DIR}/*.h* set_property(GLOBAL PROPERTY USE_FOLDERS ON)
${PROJECT_SOURCE_DIR}/*.c* set(CMAKE_CXX_STANDARD 17) # :windowsC++11 linuxC++14 gtest linuxC++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_LIBSBUILD_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 publicLinktarget使 #
# PRIVATE privatelinktarget #add_compile_definitions(JUDGE_USE_TCMALLOC)
# INTERFACE interfacetarget #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()
#DebugDebug
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,
# linuxgcc-fPIC
# 使-fPIC
if(BUILD_SHARED_LIBS)
add_compile_options(-fPIC)
endif()
# -w warning
# -Wall
# -W -Wallvoid,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}")
# exedll
message(STATUS "${MSG_INFO} CMAKE_RUNTIME_OUTPUT_DIRECTORY = ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
# liba
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...")

View 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);
}

View 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 publicLinktarget使
# PRIVATE privatelinktarget
# INTERFACE interfacetarget
# 使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