mirror of
https://github.com/loot/libloot.git
synced 2026-07-27 14:16:01 -07:00
Use CMake to resolve most dependencies
The CEF dependency is not resolved using CMake because it's only available behind a CAPTCHA, and the Boost dependency is not resolved using CMake because it is a relatively large dependency that is better shared between LOOT and its dependencies that use it, instead of each having to build a separate copy. This is slower than the existing Travis script, because all targets in the dependencies are now built, but it is more portable.
This commit is contained in:
+2
-17
@@ -25,9 +25,6 @@ addons:
|
||||
install:
|
||||
# Use GCC 5.
|
||||
- if [ "$CXX" = "g++" ]; then export CXX="g++-5" CC="gcc-5"; fi
|
||||
# Run install step script to download and build dependencies.
|
||||
- chmod +x scripts/install-step.travis.sh
|
||||
- ./scripts/install-step.travis.sh
|
||||
# Install the latest stable Node.js. The default Node.js version is too old
|
||||
# for some of the JavaScript syntax used.
|
||||
- npm install -g nvm
|
||||
@@ -40,22 +37,10 @@ install:
|
||||
- bower install
|
||||
|
||||
before_script:
|
||||
# Build Google Test
|
||||
- cd ../..
|
||||
- wget https://github.com/google/googletest/archive/release-1.7.0.tar.gz -O - | tar -xz
|
||||
- cd googletest-release-1.7.0
|
||||
- cmake .
|
||||
- make
|
||||
# Move into the cloned LOOT repo build path.
|
||||
- mkdir $TRAVIS_BUILD_DIR/build && cd $TRAVIS_BUILD_DIR/build
|
||||
# Fetch plugins to test with.
|
||||
- wget https://github.com/WrinklyNinja/testing-plugins/archive/1.0.0.tar.gz -O - | tar -xz
|
||||
- mv testing-plugins-1.0.0/* ./
|
||||
# Fetch metadata to test with.
|
||||
- wget https://github.com/loot/testing-metadata/archive/1.0.0.tar.gz -O - | tar -xz
|
||||
- mv testing-metadata-1.0.0 testing-metadata
|
||||
- mkdir build && cd build
|
||||
# Travis machines are 64 bit, and the dependencies use dynamic linking.
|
||||
- cmake .. -DPROJECT_ARCH=64 -DPROJECT_STATIC_RUNTIME=OFF -DBUILD_SHARED_LIBS=OFF -DGTEST_ROOT=../../googletest-release-1.7.0
|
||||
- cmake .. -DPROJECT_STATIC_RUNTIME=OFF -DBUILD_SHARED_LIBS=OFF
|
||||
|
||||
script:
|
||||
- '[ "${TRAVIS_PULL_REQUEST}" = "false" ] && npm test || false'
|
||||
|
||||
+132
-63
@@ -1,7 +1,14 @@
|
||||
# Settings passed on the command line:
|
||||
#
|
||||
# PROJECT_ARCH = the build architecture
|
||||
# LIBESPM_ROOT = the path to the root of the libespm source.
|
||||
|
||||
cmake_minimum_required (VERSION 2.8)
|
||||
cmake_policy(SET CMP0015 NEW)
|
||||
project (LOOT)
|
||||
include(ExternalProject)
|
||||
|
||||
option(BUILD_SHARED_LIBS "Build a shared library" ON)
|
||||
option(PROJECT_STATIC_RUNTIME "Build with static runtime libs (/MT)" ON)
|
||||
|
||||
##############################
|
||||
# Get Build Revision
|
||||
@@ -24,16 +31,9 @@ message(STATUS "Git revision: ${GIT_COMMIT_STRING}")
|
||||
configure_file("${CMAKE_SOURCE_DIR}/src/backend/globals.cpp.in" "${CMAKE_BINARY_DIR}/generated/globals.cpp" @ONLY)
|
||||
|
||||
##############################
|
||||
# General Settings
|
||||
# External Projects
|
||||
##############################
|
||||
|
||||
cmake_minimum_required (VERSION 2.8)
|
||||
cmake_policy(SET CMP0015 NEW)
|
||||
project (LOOT)
|
||||
|
||||
option(BUILD_SHARED_LIBS "Build a shared library" ON)
|
||||
option(PROJECT_STATIC_RUNTIME "Build with static runtime libs (/MT)" ON)
|
||||
|
||||
# With MSVC, the 32/64 bit compilers have separate generators, so PROJECT_ARCH
|
||||
# should always match whichever is being used.
|
||||
IF (MSVC)
|
||||
@@ -42,30 +42,12 @@ IF (MSVC)
|
||||
ELSE ()
|
||||
set (PROJECT_ARCH "32")
|
||||
ENDIF ()
|
||||
set(YAML_CPP_LIBRARY_SUFFIX "mt${CMAKE_STATIC_LIBRARY_SUFFIX}")
|
||||
ELSE ()
|
||||
IF (NOT DEFINED PROJECT_ARCH)
|
||||
set (PROJECT_ARCH "32")
|
||||
ENDIF ()
|
||||
ENDIF ()
|
||||
|
||||
IF (NOT DEFINED LIBESPM_ROOT)
|
||||
set (LIBESPM_ROOT "../../libespm")
|
||||
ENDIF ()
|
||||
|
||||
IF (NOT DEFINED LIBGIT2_ROOT)
|
||||
set (LIBGIT2_ROOT "../../libgit2")
|
||||
ENDIF ()
|
||||
|
||||
IF (NOT DEFINED LIBLOADORDER_ROOT)
|
||||
set (LIBLOADORDER_ROOT "../../libloadorder")
|
||||
ENDIF ()
|
||||
|
||||
IF (NOT DEFINED CEF_ROOT)
|
||||
set (CEF_ROOT "../../cef")
|
||||
ENDIF ()
|
||||
|
||||
IF (NOT DEFINED PSEUDOSEM_ROOT)
|
||||
set (PSEUDOSEM_ROOT "../../pseudosem")
|
||||
set(YAML_CPP_LIBRARY_SUFFIX ${CMAKE_STATIC_LIBRARY_SUFFIX})
|
||||
ENDIF ()
|
||||
|
||||
set (Boost_USE_STATIC_LIBS ${PROJECT_STATIC_RUNTIME})
|
||||
@@ -77,8 +59,87 @@ IF (NOT Boost_USE_STATIC_LIBS)
|
||||
ENDIF ()
|
||||
|
||||
find_package(Boost REQUIRED COMPONENTS atomic log log_setup regex locale thread date_time chrono filesystem system iostreams)
|
||||
find_package(yaml-cpp)
|
||||
find_package(GTest)
|
||||
|
||||
ExternalProject_Add(GTest
|
||||
PREFIX "external"
|
||||
URL "https://github.com/google/googletest/archive/release-1.7.0.tar.gz"
|
||||
INSTALL_COMMAND "")
|
||||
ExternalProject_Get_Property(GTest SOURCE_DIR BINARY_DIR)
|
||||
set (GTEST_INCLUDE_DIRS "${SOURCE_DIR}/include")
|
||||
set (GTEST_LIBRARIES "${BINARY_DIR}/${CMAKE_CFG_INTDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX}")
|
||||
|
||||
ExternalProject_Add(libespm
|
||||
PREFIX "external"
|
||||
URL "https://github.com/WrinklyNinja/libespm/archive/2.5.2.tar.gz"
|
||||
CONFIGURE_COMMAND ""
|
||||
BUILD_COMMAND ""
|
||||
INSTALL_COMMAND "")
|
||||
ExternalProject_Get_Property(libespm SOURCE_DIR)
|
||||
set (LIBESPM_INCLUDE_DIRS "${SOURCE_DIR}/include")
|
||||
|
||||
ExternalProject_Add(libgit2
|
||||
PREFIX "external"
|
||||
URL "https://github.com/libgit2/libgit2/archive/v0.24.0.tar.gz"
|
||||
CMAKE_ARGS -DBUILD_SHARED_LIBS=OFF -DBUILD_CLAR=OFF
|
||||
BUILD_COMMAND ${CMAKE_COMMAND} --build . --target git2 --config $(CONFIGURATION)
|
||||
INSTALL_COMMAND "")
|
||||
ExternalProject_Get_Property(libgit2 SOURCE_DIR BINARY_DIR)
|
||||
set(LIBGIT2_INCLUDE_DIRS "${SOURCE_DIR}/include")
|
||||
set(LIBGIT2_LIBRARIES "${BINARY_DIR}/${CMAKE_CFG_INTDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}git2${CMAKE_STATIC_LIBRARY_SUFFIX}")
|
||||
|
||||
ExternalProject_Add(libloadorder
|
||||
PREFIX "external"
|
||||
DEPENDS libespm
|
||||
URL "https://github.com/WrinklyNinja/libloadorder/archive/8.0.0.tar.gz"
|
||||
CMAKE_ARGS -DBOOST_INCLUDEDIR=${Boost_INCLUDE_DIR} -DPROJECT_STATIC_RUNTIME=${PROJECT_STATIC_RUNTIME}
|
||||
# BUILD_COMMAND ${CMAKE_COMMAND} --build . --target loadorder --config $(CONFIGURATION)
|
||||
INSTALL_COMMAND "")
|
||||
ExternalProject_Get_Property(libloadorder SOURCE_DIR BINARY_DIR)
|
||||
set(LIBLOADORDER_INCLUDE_DIRS "${SOURCE_DIR}/include")
|
||||
set(LIBLOADORDER_LIBRARIES "${BINARY_DIR}/${CMAKE_CFG_INTDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}loadorder${CMAKE_STATIC_LIBRARY_SUFFIX}")
|
||||
|
||||
ExternalProject_Add(pseudosem
|
||||
PREFIX "external"
|
||||
URL "https://github.com/WrinklyNinja/pseudosem/archive/1.0.1.tar.gz"
|
||||
CONFIGURE_COMMAND ""
|
||||
BUILD_COMMAND ""
|
||||
INSTALL_COMMAND "")
|
||||
ExternalProject_Get_Property(pseudosem SOURCE_DIR)
|
||||
set(PSEUDOSEM_INCLUDE_DIRS "${SOURCE_DIR}/include")
|
||||
|
||||
ExternalProject_Add(testing-metadata
|
||||
PREFIX "external"
|
||||
URL "https://github.com/loot/testing-metadata/archive/1.0.0.tar.gz"
|
||||
CONFIGURE_COMMAND ""
|
||||
BUILD_COMMAND ""
|
||||
INSTALL_COMMAND "")
|
||||
|
||||
ExternalProject_Add(testing-plugins
|
||||
PREFIX "external"
|
||||
URL "https://github.com/WrinklyNinja/testing-plugins/archive/1.0.0.tar.gz"
|
||||
CONFIGURE_COMMAND ""
|
||||
BUILD_COMMAND ""
|
||||
INSTALL_COMMAND "")
|
||||
|
||||
ExternalProject_Add(yaml-cpp
|
||||
PREFIX "external"
|
||||
URL "https://github.com/WrinklyNinja/yaml-cpp/archive/patched-for-loot.tar.gz"
|
||||
CMAKE_ARGS -DMSVC_SHARED_RT=OFF
|
||||
BUILD_COMMAND ${CMAKE_COMMAND} --build . --target yaml-cpp --config $(CONFIGURATION)
|
||||
INSTALL_COMMAND "")
|
||||
ExternalProject_Get_Property(yaml-cpp SOURCE_DIR BINARY_DIR)
|
||||
set(YAML_CPP_INCLUDE_DIRS "${SOURCE_DIR}/include")
|
||||
|
||||
set(YAML_CPP_LIBRARIES "${BINARY_DIR}/${CMAKE_CFG_INTDIR}/libyaml-cpp${YAML_CPP_LIBRARY_SUFFIX}")
|
||||
|
||||
|
||||
##############################
|
||||
# General Settings
|
||||
##############################
|
||||
|
||||
IF (NOT DEFINED CEF_ROOT)
|
||||
set (CEF_ROOT "../../cef")
|
||||
ENDIF ()
|
||||
|
||||
set (LOOT_SRC "${CMAKE_SOURCE_DIR}/src/backend/metadata/conditional_metadata.cpp"
|
||||
"${CMAKE_SOURCE_DIR}/src/backend/metadata/file.cpp"
|
||||
@@ -163,10 +224,10 @@ set (LOOT_VALIDATOR_SRC ${LOOT_SRC}
|
||||
set (LOOT_VALIDATOR_HEADERS ${LOOT_HEADERS})
|
||||
|
||||
set (LOOT_TESTS_SRC ${LOOT_SRC}
|
||||
"${CMAKE_SOURCE_DIR}/src/api/loot_db.cpp"
|
||||
"${CMAKE_SOURCE_DIR}/src/gui/loot_settings.cpp"
|
||||
"${CMAKE_SOURCE_DIR}/src/gui/loot_state.cpp"
|
||||
"${CMAKE_SOURCE_DIR}/src/tests/main.cpp")
|
||||
"${CMAKE_SOURCE_DIR}/src/api/loot_db.cpp"
|
||||
"${CMAKE_SOURCE_DIR}/src/gui/loot_settings.cpp"
|
||||
"${CMAKE_SOURCE_DIR}/src/gui/loot_state.cpp"
|
||||
"${CMAKE_SOURCE_DIR}/src/tests/main.cpp")
|
||||
|
||||
set (LOOT_TESTS_HEADERS "${CMAKE_SOURCE_DIR}/src/tests/fixtures.h"
|
||||
"${CMAKE_SOURCE_DIR}/src/tests/printers.h"
|
||||
@@ -194,8 +255,8 @@ set (LOOT_TESTS_HEADERS "${CMAKE_SOURCE_DIR}/src/tests/fixtures.h"
|
||||
"${CMAKE_SOURCE_DIR}/src/tests/backend/test_metadata_list.h"
|
||||
"${CMAKE_SOURCE_DIR}/src/tests/backend/test_masterlist.h"
|
||||
"${CMAKE_SOURCE_DIR}/src/tests/backend/test_plugin_sorter.h"
|
||||
"${CMAKE_SOURCE_DIR}/src/tests/gui/test_loot_settings.h"
|
||||
"${CMAKE_SOURCE_DIR}/src/tests/gui/test_loot_state.h")
|
||||
"${CMAKE_SOURCE_DIR}/src/tests/gui/test_loot_settings.h"
|
||||
"${CMAKE_SOURCE_DIR}/src/tests/gui/test_loot_state.h")
|
||||
|
||||
source_group("Header Files\\backend" FILES ${LOOT_HEADERS})
|
||||
source_group("Header Files\\gui" FILES ${LOOT_GUI_HEADERS})
|
||||
@@ -211,21 +272,17 @@ source_group("Source Files\\validator" FILES ${LOOT_VALIDATOR_SRC})
|
||||
# Include source and library directories.
|
||||
include_directories ("${CMAKE_SOURCE_DIR}/src"
|
||||
"${CMAKE_SOURCE_DIR}/include"
|
||||
"${LIBLOADORDER_ROOT}/include"
|
||||
"${LIBGIT2_ROOT}/include"
|
||||
${LIBLOADORDER_INCLUDE_DIRS}
|
||||
${LIBGIT2_INCLUDE_DIRS}
|
||||
${CEF_ROOT}
|
||||
"${LIBESPM_ROOT}/include"
|
||||
${LIBESPM_INCLUDE_DIRS}
|
||||
${Boost_INCLUDE_DIRS}
|
||||
${YAML_CPP_INCLUDE_DIR}
|
||||
${YAML_CPP_INCLUDE_DIRS}
|
||||
${GTEST_INCLUDE_DIRS}
|
||||
"${PSEUDOSEM_ROOT}/include")
|
||||
${PSEUDOSEM_INCLUDE_DIRS})
|
||||
|
||||
# Look in build and build/<arch> folders to support single and multiarch builds.
|
||||
link_directories ("${LIBLOADORDER_ROOT}/build"
|
||||
"${LIBLOADORDER_ROOT}/build/${PROJECT_ARCH}"
|
||||
"${LIBGIT2_ROOT}/build"
|
||||
"${LIBGIT2_ROOT}/build/${PROJECT_ARCH}"
|
||||
"${CEF_ROOT}"
|
||||
link_directories ("${CEF_ROOT}"
|
||||
"${CEF_ROOT}/build/libcef_dll")
|
||||
|
||||
|
||||
@@ -238,7 +295,7 @@ IF ($ENV{TRAVIS})
|
||||
add_definitions (-DTRAVIS)
|
||||
ENDIF ()
|
||||
|
||||
# Settings when compiling for Windows. Since it's a Windows-only app this is always true, but useful to check for copy/paste into other projects.
|
||||
# Settings when compiling for Windows.
|
||||
IF (CMAKE_SYSTEM_NAME MATCHES "Windows")
|
||||
add_definitions (-DUNICODE -D_UNICODE -DLIBLO_STATIC)
|
||||
set (LOOT_API_SRC ${LOOT_API_SRC} "${CMAKE_SOURCE_DIR}/src/resource.rc")
|
||||
@@ -254,12 +311,10 @@ IF (CMAKE_COMPILER_IS_GNUCXX)
|
||||
set (CMAKE_MODULE_LINKER_FLAGS "-static-libstdc++ -static-libgcc")
|
||||
ENDIF ()
|
||||
|
||||
set (LOOT_LIBS git2
|
||||
ssl
|
||||
set (LOOT_LIBS ssl
|
||||
curl
|
||||
z
|
||||
crypto
|
||||
loadorder${PROJECT_ARCH})
|
||||
crypto)
|
||||
set (LOOT_GUI_LIBS ${LOOT_LIBS}
|
||||
cef
|
||||
cef_dll_wrapper
|
||||
@@ -298,9 +353,7 @@ ELSEIF (MSVC)
|
||||
ENDFOREACH()
|
||||
ENDIF ()
|
||||
|
||||
set (LOOT_LIBS git2
|
||||
version
|
||||
loadorder${PROJECT_ARCH}
|
||||
set (LOOT_LIBS version
|
||||
ws2_32
|
||||
shlwapi
|
||||
winhttp
|
||||
@@ -321,21 +374,23 @@ ENDIF ()
|
||||
|
||||
# Build API.
|
||||
add_library (loot${PROJECT_ARCH} ${LOOT_API_SRC} ${LOOT_API_HEADERS})
|
||||
target_link_libraries (loot${PROJECT_ARCH} ${Boost_LIBRARIES} ${YAML_CPP_LIBRARIES} ${LOOT_LIBS})
|
||||
add_dependencies (loot${PROJECT_ARCH} libespm libgit2 libloadorder pseudosem yaml-cpp)
|
||||
target_link_libraries (loot${PROJECT_ARCH} ${Boost_LIBRARIES} ${YAML_CPP_LIBRARIES} ${LIBGIT2_LIBRARIES} ${LOOT_LIBS} ${LIBLOADORDER_LIBRARIES})
|
||||
|
||||
IF (${GTEST_FOUND})
|
||||
# Build tests.
|
||||
add_executable(tests ${LOOT_TESTS_SRC} ${LOOT_TESTS_HEADERS})
|
||||
target_link_libraries(tests loot${PROJECT_ARCH} ${Boost_LIBRARIES} ${YAML_CPP_LIBRARIES} ${LOOT_LIBS} ${GTEST_BOTH_LIBRARIES})
|
||||
ENDIF ()
|
||||
# Build tests.
|
||||
add_executable(tests ${LOOT_TESTS_SRC} ${LOOT_TESTS_HEADERS})
|
||||
add_dependencies(tests loot${PROJECT_ARCH} GTest testing-metadata testing-plugins)
|
||||
target_link_libraries(tests loot${PROJECT_ARCH} ${Boost_LIBRARIES} ${YAML_CPP_LIBRARIES} ${LOOT_LIBS} ${GTEST_LIBRARIES})
|
||||
|
||||
# Build application.
|
||||
add_executable (LOOT ${LOOT_GUI_SRC} ${LOOT_GUI_HEADERS})
|
||||
target_link_libraries (LOOT ${Boost_LIBRARIES} ${YAML_CPP_LIBRARIES} ${LOOT_GUI_LIBS})
|
||||
add_dependencies (LOOT libespm libgit2 libloadorder pseudosem yaml-cpp)
|
||||
target_link_libraries (LOOT ${Boost_LIBRARIES} ${LOOT_GUI_LIBS} ${LIBGIT2_LIBRARIES} ${LIBLOADORDER_LIBRARIES} ${YAML_CPP_LIBRARIES})
|
||||
|
||||
# Build validator.
|
||||
add_executable (metadata-validator ${LOOT_VALIDATOR_SRC} ${LOOT_VALIDATOR_HEADERS})
|
||||
target_link_libraries (metadata-validator ${Boost_LIBRARIES} ${YAML_CPP_LIBRARIES} ${LOOT_LIBS})
|
||||
add_dependencies (LOOT libespm libgit2 libloadorder yaml-cpp)
|
||||
target_link_libraries (metadata-validator ${Boost_LIBRARIES} ${LOOT_LIBS} ${LIBGIT2_LIBRARIES} ${LIBLOADORDER_LIBRARIES} ${YAML_CPP_LIBRARIES})
|
||||
|
||||
|
||||
|
||||
@@ -423,3 +478,17 @@ ENDFOREACH()
|
||||
# Run Vulcanize to build the UI HTML.
|
||||
add_custom_command(TARGET LOOT POST_BUILD
|
||||
COMMAND "node" "${CMAKE_SOURCE_DIR}/scripts/vulcanize.js" ${CMAKE_SOURCE_DIR})
|
||||
|
||||
# Copy testing metadata
|
||||
ExternalProject_Get_Property(testing-metadata SOURCE_DIR)
|
||||
add_custom_command(TARGET tests POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||||
${SOURCE_DIR}
|
||||
"$<TARGET_FILE_DIR:tests>/testing-metadata")
|
||||
|
||||
# Copy testing plugins
|
||||
ExternalProject_Get_Property(testing-plugins SOURCE_DIR)
|
||||
add_custom_command(TARGET tests POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||||
${SOURCE_DIR}
|
||||
$<TARGET_FILE_DIR:tests>)
|
||||
|
||||
@@ -25,23 +25,10 @@ Once Node.js is installed, run `npm install` from the repository root to install
|
||||
|
||||
### Dependencies
|
||||
|
||||
LOOT requires the following C/C++ libraries (version numbers used in latest development revision given):
|
||||
LOOT requires a mix of web and C/C++ libraries. The web libraries can be fetched by running `./node_modules/.bin/bower install` from the repository root, and most of the C/C++ dependencies are resolved by CMake, but the following must be obtained separately (version numbers used in latest development revision given):
|
||||
|
||||
* [Boost](http://www.boost.org) v1.60.0
|
||||
* [Chromium Embedded Framework](https://bitbucket.org/chromiumembedded/cef) branch 2623: Required to build the GUI, but not the API or tests.
|
||||
* [Google Test](https://github.com/google/googletest) v1.7: Required to build the tests, but not the API or the GUI.
|
||||
* [Libespm](http://github.com/WrinklyNinja/libespm) v2.5.0
|
||||
* [Libgit2](http://libgit2.github.com/) v0.24.0
|
||||
* [Libloadorder](http://github.com/WrinklyNinja/libloadorder) v7.0.0
|
||||
* [Pseudosem](http://github.com/WrinklyNinja/pseudosem) v1.0.1
|
||||
* [yaml-cpp](http://github.com/WrinklyNinja/yaml-cpp): Use the `patched-for-loot` branch.
|
||||
|
||||
In addition, LOOT's UI relies on the web libraries below, which can be fetched by running `./node_modules/.bin/bower install` from the repository root.
|
||||
|
||||
* [Polymer](https://www.polymer-project.org)
|
||||
* [Jed](https://github.com/SlexAxton/Jed)
|
||||
* [Jed Gettext Parser](https://github.com/WrinklyNinja/jed-gettext-parser)
|
||||
* [Marked](https://github.com/chjj/marked)
|
||||
|
||||
### Building
|
||||
|
||||
@@ -59,12 +46,8 @@ Parameter | Values | Default |Description
|
||||
`PROJECT_STATIC_RUNTIME` | `ON`, `OFF` | `ON` | Whether to link the C++ runtime statically or not. This also affects the whether static or shared Boost libraries are used.
|
||||
`PROJECT_ARCH` | `32`, `64` | `32` | Whether to build 32 or 64 bit LOOT binaries.
|
||||
`CEF_ROOT` | path | `../../cef` | Path to the root of the Chromium Embedded Framework folder.
|
||||
`LIBESPM_ROOT` | path | `../../libespm` | Path to the root of the libespm repository folder.
|
||||
`LIBGIT2_ROOT` | path | `../../libgit2` | Path to the root of the libgit2 repository folder.
|
||||
`LIBLOADORDER_ROOT` | path | `../../libloadorder` | Path to the root of the libloadorder repository folder.
|
||||
`PSEUDOSEM_ROOT` | Path | `../../pseudosem` | Path to the root of the Pseudosem repository folder.
|
||||
|
||||
The default paths given in the table above are relative to LOOT's `CMakeLists.txt`.
|
||||
The default paths given in the table above are relative to LOOT's `CMakeLists.txt`. You may also need to set `BOOST_ROOT` if CMake cannot find Boost.
|
||||
|
||||
## Packaging Releases
|
||||
|
||||
|
||||
+3
-44
@@ -1,6 +1,6 @@
|
||||
# Build Instructions using Microsoft Visual C++
|
||||
|
||||
These instructions were used to build LOOT using Microsoft Visual Studio 2013 Community, though they should apply to other versions of MSVC.
|
||||
These instructions were used to build LOOT using Microsoft Visual Studio 2015 Community, though they should apply to other versions of MSVC.
|
||||
|
||||
#### Boost
|
||||
|
||||
@@ -19,55 +19,14 @@ Most of the required binaries are pre-built, but the libcef_dll_wrapper dynamic
|
||||
|
||||
```
|
||||
mkdir build && cd build
|
||||
cmake.exe .. -G "Visual Studio 12"
|
||||
cmake.exe .. -G "Visual Studio 14"
|
||||
```
|
||||
|
||||
2. Open the generated solution file, and build it with `Release` configuration.
|
||||
|
||||
#### Google Test
|
||||
|
||||
1. Configure CMake and generate a build system for Visual Studio by running:
|
||||
|
||||
```
|
||||
mkdir build && cd build
|
||||
cmake.exe .. -G "Visual Studio 12"
|
||||
```
|
||||
|
||||
2. Open the generated solution file, and build it with `Release` configuration.
|
||||
|
||||
#### Libgit2
|
||||
|
||||
1. Configure CMake and generate a build system for Visual Studio by running:
|
||||
|
||||
```
|
||||
mkdir build && cd build
|
||||
cmake.exe .. -G "Visual Studio 12" -DBUILD_SHARED_LIBS=OFF
|
||||
```
|
||||
|
||||
Adapt the commands as necessary for your particular setup.
|
||||
2. Open the generated solution file, and build it with `Release` configuration.
|
||||
|
||||
#### Libloadorder
|
||||
|
||||
Follow the instructions in libloadorder's README.md to build it as a static library.
|
||||
|
||||
Example CMake keys: `-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=build -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY=build`
|
||||
|
||||
#### yaml-cpp
|
||||
|
||||
1. Configure CMake and generate a build system for Visual Studio by running:
|
||||
|
||||
```
|
||||
mkdir build && cd build
|
||||
cmake.exe .. -G "Visual Studio 12" -DBOOST_ROOT={BOOST_ROOT} -DMSVC_SHARED_RT=OFF
|
||||
```
|
||||
|
||||
Adapt the commands as necessary for your particular setup.
|
||||
2. Open the generated solution file, and build it with `Release` configuration.
|
||||
|
||||
#### LOOT
|
||||
|
||||
1. Set CMake up so that it builds the binaries in the `build` subdirectory of the LOOT folder.
|
||||
2. Define any necessary parameters.
|
||||
3. Configure CMake, then generate a build system for Visual Studio 12.
|
||||
3. Configure CMake, then generate a build system for Visual Studio.
|
||||
4. Open the generated solution file, and build it.
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
#!/bin/bash
|
||||
set -ev
|
||||
|
||||
# Move out of LOOT repo path.
|
||||
cd ../..
|
||||
|
||||
# Install libespm.
|
||||
wget https://github.com/WrinklyNinja/libespm/archive/2.5.0.tar.gz -O - | tar -xz
|
||||
mv libespm-2.5.0 libespm
|
||||
|
||||
# Build yaml-cpp
|
||||
wget https://github.com/WrinklyNinja/yaml-cpp/archive/patched-for-loot.tar.gz -O - | tar -xz
|
||||
mv yaml-cpp-patched-for-loot yaml-cpp
|
||||
mkdir yaml-cpp/build && cd yaml-cpp/build
|
||||
cmake ..
|
||||
make yaml-cpp
|
||||
cd ../..
|
||||
|
||||
# Build libgit2
|
||||
wget https://github.com/libgit2/libgit2/archive/v0.24.0.tar.gz -O - | tar -xz
|
||||
mv libgit2-0.24.0 libgit2
|
||||
mkdir libgit2/build && cd libgit2/build
|
||||
cmake .. -DBUILD_SHARED_LIBS=OFF
|
||||
make git2
|
||||
cd ../..
|
||||
|
||||
# Build libloadorder
|
||||
wget https://github.com/WrinklyNinja/libloadorder/archive/7.0.0.tar.gz -O - | tar -xz
|
||||
mv libloadorder-7.0.0 libloadorder
|
||||
mkdir libloadorder/build && cd libloadorder/build
|
||||
cmake .. -DPROJECT_ARCH=64 -DPROJECT_STATIC_RUNTIME=OFF -DBUILD_SHARED_LIBS=OFF -DGTEST_ROOT=../gtest-1.7.0
|
||||
make loadorder64
|
||||
cd ../..
|
||||
|
||||
# Install pseudosem
|
||||
wget https://github.com/WrinklyNinja/pseudosem/archive/1.0.1.tar.gz -O - | tar -xz
|
||||
mv pseudosem-1.0.1 pseudosem
|
||||
Reference in New Issue
Block a user