|
7 | 7 | # V8_LIBRARIES, the libraries needed to use v8.
|
8 | 8 | # V8_FOUND, If false, do not try to use v8.
|
9 | 9 |
|
10 |
| -find_path(V8_INCLUDE_DIRS PATH_SUFFIXES v8 NAMES v8.h) |
| 10 | +if(WIN32) |
| 11 | + set(ARCH ${CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE}) |
| 12 | + if(NOT ARCH) |
| 13 | + if(${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL "AMD64") |
| 14 | + set(ARCH x64) |
| 15 | + else() |
| 16 | + set(ARCH x86) |
| 17 | + endif() |
| 18 | + endif() |
| 19 | + message(STATUS "v8-v${MSVC_TOOLSET_VERSION}-${ARCH}") |
| 20 | + file(GLOB V8_NUGET_DEV_DIR LIST_DIRECTORIES TRUE |
| 21 | + ${CMAKE_BINARY_DIR}/v8-v${MSVC_TOOLSET_VERSION}-${ARCH}.*) |
| 22 | + string(REPLACE "v8-" "v8.redist-" V8_NUGET_BIN_DIR ${V8_NUGET_DEV_DIR}) |
11 | 23 |
|
12 |
| -find_library(V8_LIB NAMES v8) |
13 |
| -find_library(V8_LIBPLATFORM NAMES v8_libplatform) |
14 |
| -set(V8_LIBRARIES ${V8_LIB} ${V8_LIBPLATFORM}) |
| 24 | + set(V8_NUGET_INCLUDE_DIR ${V8_NUGET_DEV_DIR}/include) |
| 25 | + set(V8_NUGET_LIB_DIR ${V8_NUGET_DEV_DIR}/lib/${CMAKE_BUILD_TYPE}) |
| 26 | + set(V8_NUGET_BIN_DIR ${V8_NUGET_BIN_DIR}/lib/${CMAKE_BUILD_TYPE}) |
| 27 | + find_file(V8_DLL v8.dll ${V8_NUGET_BIN_DIR}) |
| 28 | + find_file(V8_LIBPLATFORMDLL v8_libplatform.dll ${V8_NUGET_BIN_DIR}) |
| 29 | + |
| 30 | + file(GLOB V8_BINARIES ${V8_NUGET_BIN_DIR}/*) |
| 31 | + message(STATUS "Copy ${V8_BINARIES} to the project output dir ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}") |
| 32 | + file(COPY ${V8_BINARIES} DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) |
| 33 | +else() |
| 34 | +endif() |
| 35 | + |
| 36 | +find_path(V8_INCLUDE_DIRS PATHS ${V8_NUGET_INCLUDE_DIR} PATH_SUFFIXES v8 NAMES v8.h) |
| 37 | +find_library(V8_LIB PATHS ${V8_NUGET_LIB_DIR} NAMES v8 v8.dll.lib) |
| 38 | +find_library(V8_LIBPLATFORM PATHS ${V8_NUGET_LIB_DIR} NAMES v8_libplatform v8_libplatform.dll.lib) |
15 | 39 |
|
16 | 40 | # handle the QUIETLY and REQUIRED arguments and set V8_FOUND to TRUE
|
17 | 41 | # if all listed variables are TRUE, hide their existence from configuration view
|
18 | 42 | include(FindPackageHandleStandardArgs)
|
19 | 43 | find_package_handle_standard_args(V8 DEFAULT_MSG V8_INCLUDE_DIRS V8_LIB V8_LIBPLATFORM)
|
20 |
| -mark_as_advanced(V8_INCLUDE_DIRS V8_LIBRARIES) |
| 44 | +mark_as_advanced(V8_INCLUDE_DIRS V8_LIB) |
21 | 45 |
|
22 | 46 | if(V8_FOUND)
|
23 |
| - if(NOT TARGET V8::V8) |
24 |
| - add_library(V8::V8 SHARED IMPORTED) |
25 |
| - set_target_properties(V8::V8 PROPERTIES IMPORTED_LOCATION "${V8_LIB}") |
26 |
| - target_include_directories(V8::V8 INTERFACE "${V8_INCLUDE_DIRS}") |
27 |
| - target_link_libraries(V8::V8 INTERFACE "${V8_LIBRARIES}") |
28 |
| - endif() |
| 47 | + add_library(V8::v8 SHARED IMPORTED) |
| 48 | + add_library(V8::libplatform SHARED IMPORTED) |
| 49 | + if(WIN32) |
| 50 | + set_target_properties(V8::v8 PROPERTIES |
| 51 | + IMPORTED_IMPLIB ${V8_LIB} IMPORTED_LOCATION ${V8_DLL}) |
| 52 | + set_target_properties(V8::libplatform PROPERTIES |
| 53 | + IMPORTED_IMPLIB ${V8_LIBPLATFORM} IMPORTED_LOCATION ${V8_LIBPLATFORMDLL}) |
| 54 | + else() |
| 55 | + set_target_properties(V8::v8 PROPERTIES IMPORTED_LOCATION ${V8_LIB}) |
| 56 | + set_target_properties(V8::libplatform PROPERTIES IMPORTED_LOCATION ${V8_LIBPLATFORM}) |
| 57 | + endif() |
| 58 | + target_include_directories(V8::v8 INTERFACE ${V8_INCLUDE_DIRS}) |
| 59 | + target_include_directories(V8::libplatform INTERFACE ${V8_INCLUDE_DIRS}) |
29 | 60 | endif()
|
0 commit comments