CMAKE: place binaries not in project root

master
Martin Gerhardy 2016-04-28 20:30:20 +02:00
parent 4d183d0a38
commit c629a3b792
16 changed files with 34 additions and 63 deletions

View File

@ -3,6 +3,9 @@ project(engine)
set(ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR} CACHE STRING "Root dir")
set(SCRIPTS_CMAKE_DIR ${PROJECT_SOURCE_DIR}/cmake)
include(${SCRIPTS_CMAKE_DIR}/common.cmake)
include(${SCRIPTS_CMAKE_DIR}/macros.cmake)
option(TOOLS "Builds with tools" ON)
option(USE_CCACHE "Use ccache" ON)
@ -27,19 +30,6 @@ else()
set(RELEASE True)
endif()
message(STATUS "Place binaries in ${ROOT_DIR}")
# First for the generic no-config case (e.g. with mingw)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${ROOT_DIR})
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}/lib)
# Second, for multi-config builds (e.g. msvc)
foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES})
string(TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${ROOT_DIR})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}/lib)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}/lib)
endforeach()
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${SCRIPTS_CMAKE_DIR})
set(CMAKE_VERBOSE_MAKEFILE ${VERBOSE})
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
@ -52,24 +42,6 @@ if (${CMAKE_EXTRA_GENERATOR} MATCHES "Eclipse CDT4")
set(CMAKE_CXX_COMPILER_ARG1 "-std=c++11" CACHE STRING "C++ version for Eclipse")
endif()
include(${SCRIPTS_CMAKE_DIR}/common.cmake)
include(${SCRIPTS_CMAKE_DIR}/macros.cmake)
if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
set(WINDOWS 1)
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Android")
set(LINUX 1)
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
set(DARWIN 1)
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
set(LINUX 1)
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Emscripten")
set(EMSCRIPTEN 1)
else()
message(WARNING "Unknown host system: ${CMAKE_SYSTEM_NAME}. Default to linux")
set(LINUX 1)
endif()
find_host_program(CCACHE "ccache")
if (CCACHE)
if (USE_CCACHE)

View File

@ -19,21 +19,21 @@ edit-local-config:
$(Q)$(EDITOR) $(LOCAL_CONFIG_DIR)/shapetool/shapetool.vars
server: build
$(Q)./server $(ARGS)
$(Q)cd $(BUILDDIR); ./server $(ARGS)
client: build
$(Q)./client $(ARGS)
$(Q)cd $(BUILDDIR); ./client $(ARGS)
shapetool: build
$(Q)./shapetool -set voxel-plainterrain false $(ARGS)
$(Q)cd $(BUILDDIR); ./shapetool -set voxel-plainterrain false $(ARGS)
run: shapetool
runfast: build
$(Q)./shapetool -set voxel-plainterrain true $(ARGS)
$(Q)cd $(BUILDDIR); ./shapetool -set voxel-plainterrain true $(ARGS)
tests: build
$(Q)./tests -- $(ARGS)
$(Q)cd $(BUILDDIR); ./tests -- $(ARGS)
remotery:
$(Q)xdg-open file://$(CURDIR)/tools/remotery/index.html

View File

@ -1,5 +1,5 @@
#include "Client.h"
#include "network/messages/ClientMessages_generated.h"
#include "messages/ClientMessages_generated.h"
#include "ui/LoginWindow.h"
#include "ui/DisconnectWindow.h"
#include "ui/AuthFailedWindow.h"

View File

@ -3,7 +3,7 @@
#include <cstdlib>
#include <SDL.h>
#include "network/messages/ServerMessages_generated.h"
#include "messages/ServerMessages_generated.h"
#include "frontend/WorldShader.h"
#include "frontend/MeshShader.h"
#include "frontend/ClientEntity.h"

View File

@ -2,7 +2,7 @@
#include "../Client.h"
#include "network/NetworkModule.h"
#include "network/messages/ServerMessages_generated.h"
#include "messages/ServerMessages_generated.h"
#include "SeedHandler.h"
#include "AuthFailedHandler.h"
#include "EntityRemoveHandler.h"

View File

@ -2,8 +2,8 @@
#include "network/Network.h"
#include "network/IMsgProtocolHandler.h"
#include "network/messages/ServerMessages_generated.h"
#include "network/messages/ClientMessages_generated.h"
#include "messages/ServerMessages_generated.h"
#include "messages/ClientMessages_generated.h"
#include "../Client.h"
template<class MSGTYPE>

View File

@ -1,7 +1,7 @@
#include "SeedHandler.h"
#include "core/App.h"
#include "core/Var.h"
#include "network/messages/ServerMessages_generated.h"
#include "messages/ServerMessages_generated.h"
#include "voxel/WorldEvents.h"
void SeedHandler::execute(ENetPeer* peer, const void* raw) {

View File

@ -3,7 +3,7 @@
#include "backend/entity/ai/AICommon.h"
#include "core/String.h"
#include "core/Common.h"
#include "network/messages/Shared_generated.h"
#include "messages/Shared_generated.h"
#include <bitset>
using namespace ai;

View File

@ -3,7 +3,7 @@
#include "backend/entity/ai/AICommon.h"
#include "core/String.h"
#include "core/Common.h"
#include "network/messages/Shared_generated.h"
#include "messages/Shared_generated.h"
using namespace ai;

View File

@ -2,8 +2,8 @@
#include "network/IMsgProtocolHandler.h"
#include "backend/entity/User.h"
#include "network/messages/ServerMessages_generated.h"
#include "network/messages/ClientMessages_generated.h"
#include "messages/ServerMessages_generated.h"
#include "messages/ClientMessages_generated.h"
using namespace network::messages::server;
using namespace network::messages::client;

View File

@ -1,7 +1,7 @@
#pragma once
#include "network/NetworkModule.h"
#include "network/messages/ClientMessages_generated.h"
#include "messages/ClientMessages_generated.h"
#include "UserConnectHandler.h"
#include "UserDisconnectHandler.h"

View File

@ -1,6 +1,6 @@
#include "UserConnectHandler.h"
#include "network/messages/ClientMessages_generated.h"
#include "network/messages/ServerMessages_generated.h"
#include "messages/ClientMessages_generated.h"
#include "messages/ServerMessages_generated.h"
#include "backend/entity/User.h"
#include "core/Var.h"

View File

@ -6,7 +6,7 @@
#include "backend/entity/EntityStorage.h"
#include "backend/entity/ai/AILoader.h"
#include "backend/poi/PoiProvider.h"
#include "network/messages/ServerMessages_generated.h"
#include "messages/ServerMessages_generated.h"
namespace backend {

View File

@ -1,12 +1,14 @@
macro(network_generate HEADER OUTDIR DEFINITION)
set(MESSAGE_OUT_DIR ${CMAKE_BINARY_DIR}/messages)
macro(network_generate HEADER DEFINITION)
add_custom_command(
OUTPUT ${OUTDIR}/${HEADER}
COMMAND ${TOOLS_DIR}/flatc -c --gen-includes -o ${OUTDIR} ${CMAKE_CURRENT_SOURCE_DIR}/definitions/${DEFINITION}
OUTPUT ${MESSAGE_OUT_DIR}/${HEADER}
COMMAND ${TOOLS_DIR}/flatc -c --gen-includes -o ${MESSAGE_OUT_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/definitions/${DEFINITION}
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/definitions/${DEFINITION}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Generating source code for ${DEFINITION}"
)
set_source_files_properties(${OUTDIR}/${HEADER} PROPERTIES GENERATED TRUE)
set_source_files_properties(${MESSAGE_OUT_DIR}/${HEADER} PROPERTIES GENERATED TRUE)
endmacro()
set(SRCS
@ -20,16 +22,14 @@ set(SRCS
set(LIB network)
add_library(${LIB} ${SRCS})
set(MESSAGE_OUT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/messages)
add_custom_target(GenerateNetworkMessages
DEPENDS ${MESSAGE_OUT_DIR}/Shared_generated.h ${MESSAGE_OUT_DIR}/ClientMessages_generated.h ${MESSAGE_OUT_DIR}/ServerMessages_generated.h
COMMENT "Generate network messages"
COMMENT "Generate network messages in ${MESSAGE_OUT_DIR}"
)
network_generate(Shared_generated.h ${MESSAGE_OUT_DIR} Shared.fbs)
network_generate(ClientMessages_generated.h ${MESSAGE_OUT_DIR} ClientMessages.fbs)
network_generate(ServerMessages_generated.h ${MESSAGE_OUT_DIR} ServerMessages.fbs)
network_generate(Shared_generated.h Shared.fbs)
network_generate(ClientMessages_generated.h ClientMessages.fbs)
network_generate(ServerMessages_generated.h ServerMessages.fbs)
target_link_libraries(${LIB} core enet flatbuffers)
set_target_properties(${LIB} PROPERTIES FOLDER ${LIB})

View File

@ -2,8 +2,8 @@
#include "IProtocolHandler.h"
#include "ProtocolHandlerRegistry.h"
#include "NetworkEvents.h"
#include "network/messages/ClientMessages_generated.h"
#include "network/messages/ServerMessages_generated.h"
#include "messages/ClientMessages_generated.h"
#include "messages/ServerMessages_generated.h"
#include "core/Trace.h"
#include "core/Log.h"

View File

@ -1 +0,0 @@
/*.h