Support install dependencies from vcpkg
This commit is contained in:
parent
6437d02e5f
commit
6cbeab8515
|
@ -33,11 +33,13 @@ if (NOT FBXSDK_FOUND)
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT EXISTS "${CMAKE_BINARY_DIR}/conan_paths.cmake")
|
if (NOT FBX2GLTF_USE_VCPKG)
|
||||||
|
if(NOT EXISTS "${CMAKE_BINARY_DIR}/conan_paths.cmake")
|
||||||
message(FATAL_ERROR
|
message(FATAL_ERROR
|
||||||
"The Conan package manager must run ('install') first. ${typical_usage_str}")
|
"The Conan package manager must run ('install') first. ${typical_usage_str}")
|
||||||
|
endif()
|
||||||
|
include("${CMAKE_BINARY_DIR}/conan_paths.cmake")
|
||||||
endif()
|
endif()
|
||||||
include("${CMAKE_BINARY_DIR}/conan_paths.cmake")
|
|
||||||
|
|
||||||
set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
|
set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
|
||||||
find_package(Threads REQUIRED)
|
find_package(Threads REQUIRED)
|
||||||
|
@ -45,17 +47,29 @@ find_package(Threads REQUIRED)
|
||||||
list(INSERT CMAKE_MODULE_PATH 0 "${CMAKE_BINARY_DIR}")
|
list(INSERT CMAKE_MODULE_PATH 0 "${CMAKE_BINARY_DIR}")
|
||||||
|
|
||||||
# stuff we get from Conan
|
# stuff we get from Conan
|
||||||
find_package(boost_filesystem MODULE REQUIRED)
|
if (FBX2GLTF_USE_VCPKG)
|
||||||
find_package(boost_optional MODULE REQUIRED)
|
find_package(Boost REQUIRED COMPONENTS filesystem)
|
||||||
find_package(libxml2 MODULE REQUIRED)
|
# find_package(Boost REQUIRED COMPONENTS optional)
|
||||||
find_package(zlib MODULE REQUIRED)
|
find_package(LibXml2 REQUIRED)
|
||||||
find_package(fmt MODULE REQUIRED)
|
find_package(ZLIB REQUIRED)
|
||||||
|
find_package(fmt REQUIRED)
|
||||||
|
else()
|
||||||
|
find_package(boost_filesystem MODULE REQUIRED)
|
||||||
|
find_package(boost_optional MODULE REQUIRED)
|
||||||
|
find_package(libxml2 MODULE REQUIRED)
|
||||||
|
find_package(zlib MODULE REQUIRED)
|
||||||
|
find_package(fmt MODULE REQUIRED)
|
||||||
|
endif()
|
||||||
|
|
||||||
# create a compilation database for e.g. clang-tidy
|
# create a compilation database for e.g. clang-tidy
|
||||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||||
|
|
||||||
# DRACO
|
# DRACO
|
||||||
ExternalProject_Add(Draco
|
if (FBX2GLTF_USE_VCPKG)
|
||||||
|
find_path(DRACO_INCLUDE_DIR draco/compression/encode.h)
|
||||||
|
find_library(DRACO_LIB dracoenc.lib)
|
||||||
|
else ()
|
||||||
|
ExternalProject_Add(Draco
|
||||||
GIT_REPOSITORY https://github.com/google/draco
|
GIT_REPOSITORY https://github.com/google/draco
|
||||||
GIT_TAG 1.3.4
|
GIT_TAG 1.3.4
|
||||||
PREFIX draco
|
PREFIX draco
|
||||||
|
@ -63,12 +77,13 @@ ExternalProject_Add(Draco
|
||||||
CMAKE_ARGS
|
CMAKE_ARGS
|
||||||
-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
|
-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
|
||||||
-DBUILD_FOR_GLTF=1
|
-DBUILD_FOR_GLTF=1
|
||||||
)
|
)
|
||||||
set(DRACO_INCLUDE_DIR "${CMAKE_BINARY_DIR}/draco/include")
|
set(DRACO_INCLUDE_DIR "${CMAKE_BINARY_DIR}/draco/include")
|
||||||
if (WIN32)
|
if (WIN32)
|
||||||
set(DRACO_LIB "${CMAKE_BINARY_DIR}/draco/lib/dracoenc.lib")
|
set(DRACO_LIB "${CMAKE_BINARY_DIR}/draco/lib/dracoenc.lib")
|
||||||
else()
|
else()
|
||||||
set(DRACO_LIB "${CMAKE_BINARY_DIR}/draco/lib/libdracoenc.a")
|
set(DRACO_LIB "${CMAKE_BINARY_DIR}/draco/lib/libdracoenc.a")
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# MATHFU
|
# MATHFU
|
||||||
|
@ -180,12 +195,21 @@ set_target_properties(libFBX2glTF PROPERTIES OUTPUT_NAME "FBX2glTF")
|
||||||
add_executable(appFBX2glTF src/FBX2glTF.cpp)
|
add_executable(appFBX2glTF src/FBX2glTF.cpp)
|
||||||
set_target_properties(appFBX2glTF PROPERTIES OUTPUT_NAME "FBX2glTF")
|
set_target_properties(appFBX2glTF PROPERTIES OUTPUT_NAME "FBX2glTF")
|
||||||
|
|
||||||
add_dependencies(libFBX2glTF
|
if (FBX2GLTF_USE_VCPKG)
|
||||||
|
add_dependencies(libFBX2glTF
|
||||||
|
# Draco
|
||||||
|
MathFu
|
||||||
|
FiFoMap
|
||||||
|
CPPCodec
|
||||||
|
)
|
||||||
|
else ()
|
||||||
|
add_dependencies(libFBX2glTF
|
||||||
Draco
|
Draco
|
||||||
MathFu
|
MathFu
|
||||||
FiFoMap
|
FiFoMap
|
||||||
CPPCodec
|
CPPCodec
|
||||||
)
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
if (NOT MSVC)
|
if (NOT MSVC)
|
||||||
# Disable annoying & spammy warning from FBX SDK header file
|
# Disable annoying & spammy warning from FBX SDK header file
|
||||||
|
@ -199,7 +223,25 @@ if (NOT MSVC)
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
target_link_libraries(libFBX2glTF
|
if (FBX2GLTF_USE_VCPKG)
|
||||||
|
message(STATUS "xmllib ${LIBXML2_LIBRARIES}")
|
||||||
|
target_link_libraries(libFBX2glTF
|
||||||
|
${FRAMEWORKS}
|
||||||
|
${Boost_FILESYSTEM_LIBRARY}
|
||||||
|
# boost_optional::boost_optional
|
||||||
|
${DRACO_LIB}
|
||||||
|
optimized ${FBXSDK_LIBRARY}
|
||||||
|
debug ${FBXSDK_LIBRARY_DEBUG}
|
||||||
|
fmt::fmt
|
||||||
|
# ${LIBXML2_LIBRARIES}
|
||||||
|
optimized "${FBXSDK_LIBRARY}/../libxml2-md.lib"
|
||||||
|
debug "${FBXSDK_LIBRARY_DEBUG}/../libxml2-md.lib"
|
||||||
|
ZLIB::ZLIB
|
||||||
|
${CMAKE_DL_LIBS}
|
||||||
|
${CMAKE_THREAD_LIBS_INIT}
|
||||||
|
)
|
||||||
|
else ()
|
||||||
|
target_link_libraries(libFBX2glTF
|
||||||
${FRAMEWORKS}
|
${FRAMEWORKS}
|
||||||
boost_filesystem::boost_filesystem
|
boost_filesystem::boost_filesystem
|
||||||
boost_optional::boost_optional
|
boost_optional::boost_optional
|
||||||
|
@ -211,11 +253,15 @@ target_link_libraries(libFBX2glTF
|
||||||
zlib::zlib
|
zlib::zlib
|
||||||
${CMAKE_DL_LIBS}
|
${CMAKE_DL_LIBS}
|
||||||
${CMAKE_THREAD_LIBS_INIT}
|
${CMAKE_THREAD_LIBS_INIT}
|
||||||
)
|
)
|
||||||
|
endif ()
|
||||||
|
|
||||||
if (APPLE)
|
if (APPLE)
|
||||||
find_package(Iconv MODULE REQUIRED)
|
find_package(Iconv MODULE REQUIRED)
|
||||||
target_link_libraries(libFBX2glTF Iconv)
|
target_link_libraries(libFBX2glTF Iconv)
|
||||||
|
elseif (MSVC)
|
||||||
|
find_package(unofficial-iconv CONFIG REQUIRED)
|
||||||
|
target_link_libraries(libFBX2glTF unofficial::iconv::libiconv unofficial::iconv::libcharset)
|
||||||
else()
|
else()
|
||||||
find_package(libiconv MODULE REQUIRED)
|
find_package(libiconv MODULE REQUIRED)
|
||||||
target_link_libraries(libFBX2glTF libiconv::libiconv)
|
target_link_libraries(libFBX2glTF libiconv::libiconv)
|
||||||
|
|
44
README.md
44
README.md
|
@ -183,20 +183,42 @@ If all goes well, you will end up with a statically linked executable in `./buil
|
||||||
|
|
||||||
### Windows
|
### Windows
|
||||||
|
|
||||||
<TODO> the below is out of date
|
#### Install FBX SDK
|
||||||
|
|
||||||
Windows users may [download](https://cmake.org/download) CMake for Windows,
|
2019.2 version is required.
|
||||||
install it and [run it](https://cmake.org/runningcmake/) on the FBX2glTF
|
|
||||||
checkout (choose a build directory distinct from the source).
|
|
||||||
|
|
||||||
As part of this process, you will be asked to choose which generator
|
#### Let FBX2glTF know where to find your FBX SDK
|
||||||
to use. **At present, only Visual Studio 2017 or 2019 is supported.** Older
|
|
||||||
versions of the IDE are unlikely to successfully build the tool.
|
|
||||||
|
|
||||||
Note that the `CMAKE_BUILD_TYPE` variable from the Unix Makefile system is
|
By default, FBX2glTF will look into `<FBX2glTF-root-dir>/sdk/<your-platform>/<FBX-SDK-version>`.
|
||||||
entirely ignored here; it is when you open the generated solution that
|
Usually you didn't install the FBX SDK into that directory.
|
||||||
you will be choose one of the canonical build types — *Debug*,
|
So simply create a symbolic link to the real FBX SDK here.
|
||||||
*Release*, *MinSizeRel*, and so on.
|
|
||||||
|
The following scripts is powershell scripts.
|
||||||
|
|
||||||
|
First you should create the `sdk` directory if it doesn't exist. cd it after all.
|
||||||
|
|
||||||
|
```ps1
|
||||||
|
> mkdir sdk
|
||||||
|
> cd sdk
|
||||||
|
```
|
||||||
|
|
||||||
|
Now create the symbolic link. (You possibly need the admin privilege)
|
||||||
|
|
||||||
|
```ps1
|
||||||
|
> new-item -Path Windows -itemtype SymbolicLink -Value "path-to-fbx-sdk"
|
||||||
|
```
|
||||||
|
|
||||||
|
the `path-to-fbx-sdk` should be something like "C:\Program Files\Autodesk\FBX\FBX SDK".
|
||||||
|
|
||||||
|
#### Install dependencies via [vcpkg](https://github.com/microsoft/vcpkg)
|
||||||
|
|
||||||
|
```ps1
|
||||||
|
> vcpkg install boost-filesystem:x64-windows boost-optional:x64-windows libxml2:x64-windows zlib:x64-windows fmt:x64-windows
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Tell FBX2glTF you are going to use vcpkg instead of connan
|
||||||
|
|
||||||
|
Add `-DFBX2GLTF_USE_VCPKG=ON` to cmake command line arguments.
|
||||||
|
|
||||||
## Conversion Process
|
## Conversion Process
|
||||||
The actual translation begins with the FBX SDK parsing the input file, and ends
|
The actual translation begins with the FBX SDK parsing the input file, and ends
|
||||||
|
|
Loading…
Reference in New Issue