forked from MaaAssistantArknights/MaaAssistantArknights
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
151 lines (129 loc) · 4.88 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
cmake_minimum_required(VERSION 3.1)
project(MaaAssistantArknights)
if (NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
endif ()
option(BUILD_TEST "build a demo" OFF)
option(BUILD_XCFRAMEWORK "build xcframework for macOS app" OFF)
option(BUILD_UNIVERSAL "build both arm64 and x86_64 on macOS" OFF)
option(INSTALL_PYTHON "install python ffi" OFF)
option(INSTALL_RESOURCE "install resource" OFF)
option(INSTALL_THIRD_LIBS "install third party libraries" ON)
option(MAA_DEPS_PATH "path to maa dependencies" "")
set(CMAKE_INSTALL_RPATH "$ORIGIN/")
set(THIRD_PARTY_PATH ${CMAKE_CURRENT_BINARY_DIR}/third_libs)
include(${PROJECT_SOURCE_DIR}/cmake/utils.cmake)
if (APPLE)
include("${PROJECT_SOURCE_DIR}/cmake/macos.cmake")
endif ()
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
if (MSVC)
add_compile_options("/utf-8")
add_compile_options("/MP")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
add_compile_options("/W4;/WX")
else ()
add_compile_options("-Wall;-Wextra;-Wpedantic")
endif ()
add_definitions(-DASST_DLL_EXPORTS)
if (MSVC)
#注意:相比VS版本缺少了 -D_CONSOLE -D_WINDLL 两项
add_definitions(-D_UNICODE -DUNICODE)
endif ()
include_directories(include)
include_directories(src/MaaCore)
file(GLOB_RECURSE maa_src src/MaaCore/*.cpp)
add_library(MaaCore SHARED ${maa_src})
if (MSVC)
find_library(FastDeploy_LIB NAMES fastdeploy PATHS 3rdparty/lib)
find_library(OpenCV NAMES opencv_world453 PATHS 3rdparty/lib)
find_library(ZLIB NAMES zlibstatic PATHS 3rdparty/lib)
target_link_libraries(MaaCore ws2_32 ${OpenCV} ${FastDeploy_LIB} ${ZLIB})
target_include_directories(MaaCore PRIVATE 3rdparty/include)
else ()
find_package(ZLIB REQUIRED)
target_include_directories(MaaCore PRIVATE ${ZLIB_INCLUDE_DIRS})
target_link_libraries(MaaCore ${ZLIB_LIBRARY})
if (CMAKE_CXX_COMPILER_ID MATCHES ".*Clang")
find_package(range-v3 REQUIRED)
target_link_libraries(MaaCore range-v3::range-v3)
endif ()
if (APPLE)
set(CMAKE_OSX_DEPLOYMENT_TARGET 12.0)
message(STATUS "MAA_DEPS_PATH: ${MAA_DEPS_PATH}")
find_package(OpenCV REQUIRED PATHS ${MAA_DEPS_PATH})
target_link_libraries(MaaCore ${OpenCV_LIBS} ${FastDeploy_LIBS})
else ()
include(${PROJECT_SOURCE_DIR}/cmake/opencv.cmake)
include(${PROJECT_SOURCE_DIR}/cmake/fastdeploy.cmake)
target_link_libraries(MaaCore ${DEPEND_LIBS})
install(TARGETS MaaCore DESTINATION .)
if (INSTALL_PYTHON)
install(DIRECTORY src/Python DESTINATION .)
endif (INSTALL_PYTHON)
if (INSTALL_RESOURCE)
install(DIRECTORY resource DESTINATION .)
install(DIRECTORY 3rdparty/resource DESTINATION .)
endif (INSTALL_RESOURCE)
endif (APPLE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -idirafter ${PROJECT_SOURCE_DIR}/3rdparty/include")
endif ()
if (BUILD_TEST)
add_executable(test src/Cpp/main.cpp)
target_link_libraries(test MaaCore)
endif (BUILD_TEST)
if (BUILD_XCFRAMEWORK)
add_custom_command(OUTPUT MaaCore.xcframework
COMMAND rm -rf MaaCore.xcframework
COMMAND xcodebuild -create-xcframework -library libMaaCore.dylib -headers ${PROJECT_SOURCE_DIR}/include -output MaaCore.xcframework
DEPENDS MaaCore
)
add_custom_command(OUTPUT Paddle2ONNX.xcframework
COMMAND rm -rf Paddle2ONNX.xcframework
COMMAND xcodebuild -create-xcframework -library ${MAA_DEPS_PATH}/lib/libpaddle2onnx.1.0.4.dylib -output Paddle2ONNX.xcframework
)
add_custom_target(MaaXCFramework ALL
DEPENDS MaaCore Paddle2ONNX.xcframework MaaCore.xcframework
)
endif (BUILD_XCFRAMEWORK)
# define MAA_VERSION from git
if (NOT MAA_VERSION)
find_package(Git)
endif ()
if (GIT_FOUND)
execute_process(
COMMAND "${GIT_EXECUTABLE}" describe --tags --dirty --broken --abbrev=40
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
RESULT_VARIABLE result
OUTPUT_VARIABLE output
ERROR_VARIABLE err
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if (result EQUAL 0)
set(MAA_VERSION "${output}")
else ()
message(WARNING "git describe returning ${result}, output:\n${err}")
endif()
endif ()
if (NOT MAA_VERSION AND GIT_FOUND)
execute_process(
COMMAND "${GIT_EXECUTABLE}" rev-parse HEAD
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
RESULT_VARIABLE result
OUTPUT_VARIABLE output
ERROR_VARIABLE err
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if (result EQUAL 0)
set(MAA_VERSION "${output}")
else ()
message(WARNING "git rev-parse returning ${result}, output:\n${err}")
endif ()
endif ()
if (NOT MAA_VERSION)
set(MAA_VERSION "DEBUG VERSION")
endif ()
message(STATUS "MAA_VERSION=${MAA_VERSION}")
add_compile_definitions(MAA_VERSION="${MAA_VERSION}")