修复Windows编译问题
This commit is contained in:
@ -2,18 +2,19 @@ cmake_minimum_required(VERSION 3.10.0)
|
||||
project(ai-box VERSION 0.1.0 LANGUAGES C CXX)
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
|
||||
if (POLICY CMP0091)
|
||||
cmake_policy(SET CMP0091 NEW)
|
||||
endif (POLICY CMP0091)
|
||||
|
||||
if(NOT DEFINED CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE Release)
|
||||
endif()
|
||||
|
||||
set(TARGET_INCLUDE_DIRS cxx)
|
||||
set(TARGET_LINK_DIRS)
|
||||
set(TARGET_LINK_LIBS)
|
||||
set(COMMON_SOURCE_FILES)
|
||||
set(NODE_SOURCE_FILES)
|
||||
|
||||
set(NODE_ADDON_FOUND OFF)
|
||||
|
||||
include_directories(cxx)
|
||||
|
||||
# NodeJS
|
||||
execute_process(
|
||||
COMMAND node ${CMAKE_SOURCE_DIR}/thirdpart/cmake-js-util.js --include
|
||||
@ -50,9 +51,7 @@ if(CMAKE_JS_RESULT EQUAL 0)
|
||||
message(STATUS "CMAKE_JS_SRC: ${CMAKE_JS_SRC}")
|
||||
message(STATUS "CMAKE_JS_LIB: ${CMAKE_JS_LIB}")
|
||||
message(STATUS "NODE_ADDON_API_DIR: ${NODE_ADDON_API_DIR}")
|
||||
list(APPEND TARGET_INCLUDE_DIRS ${CMAKE_JS_INC} ${NODE_ADDON_API_DIR})
|
||||
list(APPEND TARGET_LINK_LIBS ${CMAKE_JS_LIB})
|
||||
list(APPEND COMMON_SOURCE_FILES ${CMAKE_JS_SRC})
|
||||
include_directories(${CMAKE_JS_INC} ${NODE_ADDON_API_DIR})
|
||||
set(NODE_ADDON_FOUND ON)
|
||||
endif()
|
||||
endif()
|
||||
@ -60,7 +59,7 @@ if(NOT (CMAKE_JS_RESULT EQUAL 0))
|
||||
message(FATAL_ERROR "cmake js config failed")
|
||||
endif()
|
||||
|
||||
|
||||
# 新增Nodejs目标
|
||||
function(add_node_targert TARGET_NAME SOURCE_FILES)
|
||||
add_library(${TARGET_NAME} SHARED ${CMAKE_JS_SRC} ${SOURCE_FILES})
|
||||
target_link_libraries(${TARGET_NAME} ${CMAKE_JS_LIB})
|
||||
@ -68,7 +67,6 @@ function(add_node_targert TARGET_NAME SOURCE_FILES)
|
||||
endfunction()
|
||||
|
||||
|
||||
|
||||
# MNN
|
||||
set(MNN_CMAKE_FILE ${CMAKE_SOURCE_DIR}/thirdpart/MNN/${CMAKE_BUILD_TYPE}/config.cmake)
|
||||
if(EXISTS ${MNN_CMAKE_FILE})
|
||||
@ -77,13 +75,9 @@ if(EXISTS ${MNN_CMAKE_FILE})
|
||||
message(STATUS "MNN_INCLUDE_DIR: ${MNN_INCLUDE_DIR}")
|
||||
message(STATUS "MNN_LIBS: ${MNN_LIBS}")
|
||||
include_directories(${MNN_INCLUDE_DIRS})
|
||||
list(APPEND TARGET_INCLUDE_DIRS ${MNN_INCLUDE_DIR})
|
||||
list(APPEND TARGET_LINK_DIRS ${MNN_LIB_DIR})
|
||||
list(APPEND TARGET_LINK_LIBS ${MNN_LIBS})
|
||||
link_directories(${MNN_LIB_DIR})
|
||||
add_compile_definitions(USE_MNN)
|
||||
set(USE_MNN ON)
|
||||
else()
|
||||
message(WARNING "MNN not found")
|
||||
endif()
|
||||
|
||||
# OpenCV
|
||||
@ -94,18 +88,13 @@ if(EXISTS ${OpenCV_CMAKE_FILE})
|
||||
message(STATUS "OpenCV_INCLUDE_DIR: ${OpenCV_INCLUDE_DIR}")
|
||||
message(STATUS "OpenCV_LIBS: ${OpenCV_LIBS}")
|
||||
include_directories(${OpenCV_INCLUDE_DIRS})
|
||||
link_directories(${OpenCV_LIB_DIR})
|
||||
|
||||
if(NODE_ADDON_FOUND)
|
||||
add_node_targert(cv cxx/cv/node.cc)
|
||||
target_link_libraries(cv ${OpenCV_LIBS})
|
||||
target_link_directories(cv PUBLIC ${OpenCV_INCLUDE_DIR})
|
||||
target_compile_definitions(cv PUBLIC USE_OPENCV)
|
||||
endif()
|
||||
|
||||
list(APPEND TARGET_INCLUDE_DIRS ${OpenCV_INCLUDE_DIR})
|
||||
list(APPEND TARGET_LINK_DIRS ${OpenCV_LIB_DIR})
|
||||
list(APPEND TARGET_LINK_LIBS ${OpenCV_LIBS})
|
||||
list(APPEND NODE_SOURCE_FILES cxx/cv/node.cc)
|
||||
endif()
|
||||
|
||||
# OnnxRuntime
|
||||
@ -115,34 +104,19 @@ if(EXISTS ${ONNXRuntime_CMAKE_FILE})
|
||||
message(STATUS "ONNXRuntime_LIB_DIR: ${ONNXRuntime_LIB_DIR}")
|
||||
message(STATUS "ONNXRuntime_INCLUDE_DIR: ${ONNXRuntime_INCLUDE_DIR}")
|
||||
message(STATUS "ONNXRuntime_LIBS: ${ONNXRuntime_LIBS}")
|
||||
list(APPEND TARGET_INCLUDE_DIRS ${ONNXRuntime_INCLUDE_DIR})
|
||||
list(APPEND TARGET_LINK_DIRS ${ONNXRuntime_LIB_DIR})
|
||||
list(APPEND TARGET_LINK_LIBS ${ONNXRuntime_LIBS})
|
||||
include_directories(${ONNXRuntime_INCLUDE_DIR})
|
||||
link_directories(${ONNXRuntime_LIB_DIR})
|
||||
|
||||
if(NODE_ADDON_FOUND)
|
||||
add_node_targert(ort cxx/ort/node.cc)
|
||||
target_link_libraries(ort ${ONNXRuntime_LIBS})
|
||||
target_link_directories(ort PUBLIC ${ONNXRuntime_LIB_DIR})
|
||||
target_compile_definitions(ort PUBLIC USE_ONNXRUNTIME)
|
||||
endif()
|
||||
|
||||
list(APPEND NODE_SOURCE_FILES
|
||||
cxx/ort/node.cc
|
||||
)
|
||||
else()
|
||||
message(WARNING "ONNXRuntime not found")
|
||||
endif()
|
||||
|
||||
|
||||
include_directories(${TARGET_INCLUDE_DIRS})
|
||||
link_directories(${TARGET_LINK_DIRS})
|
||||
add_library(addon SHARED ${COMMON_SOURCE_FILES} ${NODE_SOURCE_FILES} cxx/node.cc)
|
||||
target_link_libraries(addon ${TARGET_LINK_LIBS})
|
||||
set_target_properties(addon PROPERTIES PREFIX "" SUFFIX ".node")
|
||||
|
||||
# add_executable(test ${COMMON_SOURCE_FILES} cxx/test.cc)
|
||||
# target_link_libraries(test ${TARGET_LINK_LIBS})
|
||||
|
||||
if(MSVC AND CMAKE_JS_NODELIB_DEF AND CMAKE_JS_NODELIB_TARGET)
|
||||
if(MSVC)
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
|
||||
execute_process(COMMAND ${CMAKE_AR} /def:${CMAKE_JS_NODELIB_DEF} /out:${CMAKE_JS_NODELIB_TARGET} ${CMAKE_STATIC_LINKER_FLAGS})
|
||||
endif()
|
||||
|
Reference in New Issue
Block a user