Installation path fixes and CMakeLists refactoring
make && make install should now give a working installation.dev-ui
parent
e3db0b0c19
commit
f77734e01c
|
@ -18,7 +18,7 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${colobot_SOURCE_DIR}/cmake")
|
|||
# Global build type
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE debug)
|
||||
endif(NOT CMAKE_BUILD_TYPE)
|
||||
endif()
|
||||
|
||||
# Global compile flags
|
||||
# These are specific to GCC/MinGW; for other compilers, change as necessary
|
||||
|
@ -35,6 +35,9 @@ option(TESTS "Enable tests" ON)
|
|||
# CBot can also be a static library
|
||||
option(CBOT_STATIC "Build CBot as static libary" OFF)
|
||||
|
||||
# Doxygen docs are optional for installation
|
||||
option(INSTALL_DOCS "Install Doxygen-generated documentation" OFF)
|
||||
|
||||
|
||||
##
|
||||
# Required packages
|
||||
|
@ -46,6 +49,7 @@ find_package(SDL_image 1.2 REQUIRED)
|
|||
find_package(SDL_ttf 2.0 REQUIRED)
|
||||
find_package(PNG 1.2 REQUIRED)
|
||||
find_package(LTDL 2.4.2 REQUIRED)
|
||||
find_package(Gettext REQUIRED)
|
||||
|
||||
set(Boost_USE_STATIC_LIBS ON)
|
||||
set(Boost_USE_MULTITHREADED ON)
|
||||
|
@ -126,6 +130,21 @@ else()
|
|||
endif()
|
||||
|
||||
|
||||
##
|
||||
# Doxygen docs
|
||||
##
|
||||
|
||||
find_package(Doxygen)
|
||||
|
||||
if(DOXYGEN_FOUND AND DOXYGEN_DOT_FOUND)
|
||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
|
||||
add_custom_target(doc
|
||||
${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
COMMENT "Generating API documentation with Doxygen" VERBATIM)
|
||||
endif()
|
||||
|
||||
|
||||
##
|
||||
# Targets
|
||||
##
|
||||
|
@ -162,24 +181,27 @@ if(${TESTS})
|
|||
|
||||
endif()
|
||||
|
||||
# TODO: provide data files as git submodule
|
||||
set(COLOBOT_DATA_DIR share/games/colobot CACHE PATH "Colobot shared data directory")
|
||||
set(COLOBOT_LIB_DIR lib/colobot CACHE PATH "Colobot libraries directory")
|
||||
# Installation paths defined before compiling sources
|
||||
set(COLOBOT_INSTALL_BIN_DIR ${CMAKE_INSTALL_PREFIX}/games CACHE PATH "Colobot binary directory")
|
||||
set(COLOBOT_INSTALL_DATA_DIR ${CMAKE_INSTALL_PREFIX}/share/games/colobot CACHE PATH "Colobot shared data directory")
|
||||
set(COLOBOT_INSTALL_LIB_DIR ${CMAKE_INSTALL_PREFIX}/lib/colobot CACHE PATH "Colobot libraries directory")
|
||||
set(COLOBOT_INSTALL_DOC_DIR ${CMAKE_INSTALL_PREFIX}/share/doc/colobot CACHE PATH "Colobot documentation directory")
|
||||
set(COLOBOT_INSTALL_I18N_DIR ${CMAKE_INSTALL_PREFIX}/share/locale CACHE PATH "Colobot translations directory")
|
||||
|
||||
# Subdirectory with sources
|
||||
add_subdirectory(src bin)
|
||||
|
||||
install(DIRECTORY ../data DESTINATION ${COLOBOT_DATA_DIR})
|
||||
|
||||
# Build and install documentation
|
||||
set(COLOBOT_DOC_DIR ${CMAKE_INSTALL_PREFIX}/share/doc/colobot CACHE PATH "Colobot documentation directory")
|
||||
##
|
||||
# Installation
|
||||
##
|
||||
|
||||
find_package(Doxygen)
|
||||
if(DOXYGEN_FOUND AND DOXYGEN_DOT_FOUND)
|
||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
|
||||
add_custom_target(doc
|
||||
${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
COMMENT "Generating API documentation with Doxygen" VERBATIM )
|
||||
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/doc/ DESTINATION ${COLOBOT_DOC_DIR} OPTIONAL)
|
||||
endif(DOXYGEN_FOUND AND DOXYGEN_DOT_FOUND)
|
||||
file(GLOB DATA_FILES "data/*")
|
||||
|
||||
# Data
|
||||
install(DIRECTORY data/ DESTINATION ${COLOBOT_INSTALL_DATA_DIR})
|
||||
|
||||
# Documentation
|
||||
if(INSTALL_DOCS AND DOXYGEN_FOUND AND DOXYGEN_DOT_FOUND)
|
||||
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/doc/ DESTINATION ${COLOBOT_INSTALL_DOC_DIR} OPTIONAL)
|
||||
endif()
|
||||
|
|
|
@ -18,4 +18,4 @@ else()
|
|||
add_library(CBot SHARED ${SOURCES})
|
||||
endif()
|
||||
|
||||
install(TARGETS CBot LIBRARY DESTINATION ${COLOBOT_LIB_DIR})
|
||||
install(TARGETS CBot LIBRARY DESTINATION ${COLOBOT_INSTALL_LIB_DIR})
|
||||
|
|
|
@ -195,5 +195,5 @@ add_executable(colobot ${SOURCES})
|
|||
|
||||
target_link_libraries(colobot ${LIBS})
|
||||
|
||||
install(TARGETS colobot RUNTIME DESTINATION games/)
|
||||
set_target_properties(colobot PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${COLOBOT_LIB_DIR}")
|
||||
install(TARGETS colobot RUNTIME DESTINATION ${COLOBOT_INSTALL_BIN_DIR})
|
||||
set_target_properties(colobot PROPERTIES INSTALL_RPATH ${COLOBOT_INSTALL_LIB_DIR})
|
||||
|
|
|
@ -30,12 +30,11 @@
|
|||
|
||||
#include "object/robotmain.h"
|
||||
|
||||
#include <boost/filesystem.hpp>
|
||||
|
||||
#include <SDL/SDL.h>
|
||||
#include <SDL/SDL_image.h>
|
||||
|
||||
#include <fstream>
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <libintl.h>
|
||||
#include <unistd.h>
|
||||
|
@ -131,7 +130,7 @@ CApplication::CApplication()
|
|||
m_mouseButtonsState = 0;
|
||||
m_trackedKeys = 0;
|
||||
|
||||
m_dataPath = CBOT_DEFAULT_DATADIR;
|
||||
m_dataPath = COLOBOT_DEFAULT_DATADIR;
|
||||
|
||||
m_language = LANGUAGE_ENV;
|
||||
|
||||
|
@ -274,13 +273,10 @@ bool CApplication::Create()
|
|||
{
|
||||
GetLogger()->Info("Creating CApplication\n");
|
||||
|
||||
// I know, a primitive way to check for dir, but works
|
||||
std::string readmePath = m_dataPath + "/README.txt";
|
||||
std::ifstream testReadme;
|
||||
testReadme.open(readmePath.c_str(), std::ios_base::in);
|
||||
if (!testReadme.good())
|
||||
boost::filesystem::path dataPath(m_dataPath);
|
||||
if (! (boost::filesystem::exists(dataPath) && boost::filesystem::is_directory(dataPath)) )
|
||||
{
|
||||
GetLogger()->Error("Could not open test file in data dir: '%s'\n", readmePath.c_str());
|
||||
GetLogger()->Error("Data directory '%s' doesn't exist or is not a directory\n", m_dataPath.c_str());
|
||||
m_errorMessage = std::string("Could not read from data directory:\n") +
|
||||
std::string("'") + m_dataPath + std::string("'\n") +
|
||||
std::string("Please check your installation, or supply a valid data directory by -datadir option.");
|
||||
|
@ -322,7 +318,7 @@ bool CApplication::Create()
|
|||
setlocale(LC_ALL, "");
|
||||
GetLogger()->Debug("Set locale to '%s'\n", locale.c_str());
|
||||
|
||||
bindtextdomain("colobot", CBOT_I18N_DIR);
|
||||
bindtextdomain("colobot", COLOBOT_I18N_DIR);
|
||||
bind_textdomain_codeset("colobot", "UTF-8");
|
||||
textdomain("colobot");
|
||||
|
||||
|
|
|
@ -8,5 +8,5 @@
|
|||
#cmakedefine USE_GLEW @USE_GLEW@
|
||||
#cmakedefine GLEW_STATIC
|
||||
|
||||
#define CBOT_DEFAULT_DATADIR "@COLOBOT_DATA_DIR@"
|
||||
#define CBOT_I18N_DIR "@CMAKE_INSTALL_PREFIX@/share/locale/"
|
||||
#define COLOBOT_DEFAULT_DATADIR "@COLOBOT_INSTALL_DATA_DIR@"
|
||||
#define COLOBOT_I18N_DIR "@COLOBOT_INSTALL_I18N_DIR@"
|
||||
|
|
|
@ -181,7 +181,6 @@ enum DataDir
|
|||
DIR_AI, //! < ai scripts
|
||||
DIR_FONT, //! < fonts
|
||||
DIR_HELP, //! < help files
|
||||
DIR_I18N, //! < translations
|
||||
DIR_ICON, //! < icons & images
|
||||
DIR_LEVEL, //! < levels
|
||||
DIR_MODEL, //! < models
|
||||
|
|
|
@ -1,13 +1,10 @@
|
|||
cmake_minimum_required(VERSION 2.8)
|
||||
|
||||
SET(_potFile colobot.pot)
|
||||
set(_potFile colobot.pot)
|
||||
|
||||
# TODO: Use a finder
|
||||
SET(XGETTEXT_CMD /usr/bin/xgettext)
|
||||
find_program(XGETTEXT_CMD xgettext)
|
||||
|
||||
find_package(Gettext REQUIRED)
|
||||
|
||||
ADD_CUSTOM_COMMAND(OUTPUT ${_potFile}
|
||||
add_custom_command(OUTPUT ${_potFile}
|
||||
COMMAND ${XGETTEXT_CMD} ../app/app.cpp --output=${_potFile}
|
||||
COMMAND ${XGETTEXT_CMD} ../common/restext_strings.c --output=${_potFile} --join-existing --extract-all --no-location
|
||||
|
||||
|
@ -15,10 +12,8 @@ ADD_CUSTOM_COMMAND(OUTPUT ${_potFile}
|
|||
COMMENT "Extract translatable messages to ${_potFile}"
|
||||
)
|
||||
|
||||
ADD_CUSTOM_TARGET(_${potFile} ${_all}
|
||||
DEPENDS ${_potFile}
|
||||
)
|
||||
add_custom_target(_${potFile} ${_all} DEPENDS ${_potFile})
|
||||
|
||||
FILE(GLOB _poFiles *.po)
|
||||
file(GLOB _poFiles *.po)
|
||||
|
||||
GETTEXT_CREATE_TRANSLATIONS(${_potFile} ALL ${_poFiles})
|
||||
gettext_create_translations(${_potFile} ALL ${_poFiles})
|
||||
|
|
Loading…
Reference in New Issue