mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-03-05 13:30:34 +00:00
Merge pull request #672 from BeamNG/cmake_improvements
Cmake improvements
This commit is contained in:
commit
437d968cb2
1 changed files with 75 additions and 70 deletions
|
|
@ -2,9 +2,15 @@ project("Torque3DEngine")
|
|||
|
||||
set(TORQUE_TEMPLATE "Full" CACHE STRING "the template to use")
|
||||
|
||||
set(projectDir "${CMAKE_SOURCE_DIR}/My Projects/${TORQUE_APP_NAME}")
|
||||
set(projectOutDir "${projectDir}/game")
|
||||
set(projectSrcDir "${projectDir}/source")
|
||||
if(NOT projectDir)
|
||||
set(projectDir "${CMAKE_SOURCE_DIR}/My Projects/${TORQUE_APP_NAME}")
|
||||
endif()
|
||||
if(NOT projectOutDir)
|
||||
set(projectOutDir "${projectDir}/game")
|
||||
endif()
|
||||
if(NOT projectSrcDir)
|
||||
set(projectSrcDir "${projectDir}/source")
|
||||
endif()
|
||||
set(libDir "${CMAKE_SOURCE_DIR}/Engine/lib")
|
||||
set(srcDir "${CMAKE_SOURCE_DIR}/Engine/source")
|
||||
set(cmakeDir "${CMAKE_SOURCE_DIR}/Tools/CMake")
|
||||
|
|
@ -29,14 +35,14 @@ macro(addPath dir)
|
|||
${dir}/*.h)
|
||||
LIST(APPEND ${PROJECT_NAME}_files "${tmpa}")
|
||||
LIST(APPEND ${PROJECT_NAME}_paths "${dir}")
|
||||
#message(STATUS "addPath ${PROJECT_NAME} : ${tmpa}")
|
||||
#message(STATUS "addPath ${PROJECT_NAME} : ${tmpa}")
|
||||
#set(t "${${t}};${tmpa}")
|
||||
endmacro()
|
||||
|
||||
# adds a file to the sources
|
||||
macro(addFile filename)
|
||||
LIST(APPEND ${PROJECT_NAME}_files "${filename}")
|
||||
#message(STATUS "addFile ${PROJECT_NAME} : ${filename}")
|
||||
#message(STATUS "addFile ${PROJECT_NAME} : ${filename}")
|
||||
endmacro()
|
||||
|
||||
# finds and adds sources files in a folder recursively
|
||||
|
|
@ -49,7 +55,7 @@ macro(addPathRec dir)
|
|||
${dir}/*.h)
|
||||
LIST(APPEND ${PROJECT_NAME}_files "${tmpa}")
|
||||
LIST(APPEND ${PROJECT_NAME}_paths "${dir}")
|
||||
#message(STATUS "addPathRec ${PROJECT_NAME} : ${tmpa}")
|
||||
#message(STATUS "addPathRec ${PROJECT_NAME} : ${tmpa}")
|
||||
endmacro()
|
||||
|
||||
# adds a definition
|
||||
|
|
@ -181,17 +187,17 @@ macro(generateFiltersSpecial relDir)
|
|||
string(REGEX REPLACE "(.*)(/[^/]*)$" "\\1" SRCGR ${SRCGR})
|
||||
# do not have any ../ dirs
|
||||
string(REPLACE "../" "" SRCGR ${SRCGR})
|
||||
IF("${SRCGR}" MATCHES "^torque3d/My Projects/.*$")
|
||||
string(REPLACE "torque3d/My Projects/${PROJECT_NAME}/" "" SRCGR ${SRCGR})
|
||||
string(REPLACE "/source" "" SRCGR ${SRCGR})
|
||||
endif()
|
||||
IF("${SRCGR}" MATCHES "^torque3d/My Projects/.*$")
|
||||
string(REPLACE "torque3d/My Projects/${PROJECT_NAME}/" "" SRCGR ${SRCGR})
|
||||
string(REPLACE "/source" "" SRCGR ${SRCGR})
|
||||
endif()
|
||||
# Source_group expects \\ (double antislash), not / (slash)
|
||||
string(REPLACE / \\ SRCGR ${SRCGR})
|
||||
#STRING(REPLACE "//" "/" SRCGR ${SRCGR})
|
||||
IF(EXISTS "${f}" AND NOT IS_DIRECTORY "${f}")
|
||||
#message(STATUS "FILE: ${f} -> ${SRCGR}")
|
||||
source_group("${SRCGR}" FILES ${f})
|
||||
endif()
|
||||
IF(EXISTS "${f}" AND NOT IS_DIRECTORY "${f}")
|
||||
#message(STATUS "FILE: ${f} -> ${SRCGR}")
|
||||
source_group("${SRCGR}" FILES ${f})
|
||||
endif()
|
||||
endforeach()
|
||||
endmacro()
|
||||
# macro to add a static library
|
||||
|
|
@ -210,11 +216,11 @@ macro(addStaticLib)
|
|||
endif()
|
||||
endforeach()
|
||||
generateFilters("${firstDir}")
|
||||
if(TORQUE_STATIC)
|
||||
add_library("${PROJECT_NAME}" STATIC ${${PROJECT_NAME}_files})
|
||||
else()
|
||||
add_library("${PROJECT_NAME}" SHARED ${${PROJECT_NAME}_files})
|
||||
endif()
|
||||
if(TORQUE_STATIC)
|
||||
add_library("${PROJECT_NAME}" STATIC ${${PROJECT_NAME}_files})
|
||||
else()
|
||||
add_library("${PROJECT_NAME}" SHARED ${${PROJECT_NAME}_files})
|
||||
endif()
|
||||
# omg - only use the first folder ... otehrwise we get lots of header name collisions
|
||||
#foreach(dir ${${PROJECT_NAME}_paths})
|
||||
addInclude("${firstDir}")
|
||||
|
|
@ -245,74 +251,73 @@ macro(addExecutable)
|
|||
endmacro()
|
||||
|
||||
macro(setupVersionNumbers)
|
||||
set(TORQUE_APP_VERSION_MAJOR 1 CACHE INTEGER "")
|
||||
set(TORQUE_APP_VERSION_MINOR 0 CACHE INTEGER "")
|
||||
set(TORQUE_APP_VERSION_PATCH 0 CACHE INTEGER "")
|
||||
set(TORQUE_APP_VERSION_TWEAK 0 CACHE INTEGER "")
|
||||
mark_as_advanced(TORQUE_APP_VERSION_TWEAK)
|
||||
MATH(EXPR TORQUE_APP_VERSION "${TORQUE_APP_VERSION_MAJOR} * 1000 + ${TORQUE_APP_VERSION_MINOR} * 100 + ${TORQUE_APP_VERSION_PATCH} * 10 + ${TORQUE_APP_VERSION_TWEAK}")
|
||||
set(TORQUE_APP_VERSION_STRING "${TORQUE_APP_VERSION_MAJOR}.${TORQUE_APP_VERSION_MINOR}.${TORQUE_APP_VERSION_PATCH}.${TORQUE_APP_VERSION_TWEAK}")
|
||||
#message(STATUS "version numbers: ${TORQUE_APP_VERSION} / ${TORQUE_APP_VERSION_STRING}")
|
||||
set(TORQUE_APP_VERSION_MAJOR 1 CACHE INTEGER "")
|
||||
set(TORQUE_APP_VERSION_MINOR 0 CACHE INTEGER "")
|
||||
set(TORQUE_APP_VERSION_PATCH 0 CACHE INTEGER "")
|
||||
set(TORQUE_APP_VERSION_TWEAK 0 CACHE INTEGER "")
|
||||
mark_as_advanced(TORQUE_APP_VERSION_TWEAK)
|
||||
MATH(EXPR TORQUE_APP_VERSION "${TORQUE_APP_VERSION_MAJOR} * 1000 + ${TORQUE_APP_VERSION_MINOR} * 100 + ${TORQUE_APP_VERSION_PATCH} * 10 + ${TORQUE_APP_VERSION_TWEAK}")
|
||||
set(TORQUE_APP_VERSION_STRING "${TORQUE_APP_VERSION_MAJOR}.${TORQUE_APP_VERSION_MINOR}.${TORQUE_APP_VERSION_PATCH}.${TORQUE_APP_VERSION_TWEAK}")
|
||||
#message(STATUS "version numbers: ${TORQUE_APP_VERSION} / ${TORQUE_APP_VERSION_STRING}")
|
||||
endmacro()
|
||||
|
||||
macro(setupPackaging)
|
||||
INCLUDE(CPack)
|
||||
# only enable zips for now
|
||||
set(CPACK_BINARY_NSIS OFF CACHE INTERNAL "" FORCE)
|
||||
set(CPACK_BINARY_ZIP ON CACHE INTERNAL "" FORCE)
|
||||
set(CPACK_SOURCE_ZIP OFF CACHE INTERNAL "" FORCE)
|
||||
SET(CPACK_GENERATOR "ZIP")
|
||||
SET(CPACK_PACKAGE_VENDOR "${PROJECT_NAME}")
|
||||
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PROJECT_NAME}")
|
||||
SET(CPACK_INCLUDE_TOPLEVEL_DIRECTORY 1)
|
||||
SET(CPACK_OUTPUT_FILE_PREFIX "${projectDir}/packages/${PROJECT_NAME}")
|
||||
SET(CPACK_PACKAGE_INSTALL_DIRECTORY "")
|
||||
#SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/ReadMe.txt")
|
||||
#SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/Copyright.txt")
|
||||
SET(CPACK_PACKAGE_VERSION_MAJOR "${TORQUE_APP_VERSION_MAJOR}")
|
||||
SET(CPACK_PACKAGE_VERSION_MINOR "${TORQUE_APP_VERSION_MINOR}")
|
||||
SET(CPACK_PACKAGE_VERSION_PATCH "${TORQUE_APP_VERSION_PATCH}")
|
||||
#SET(CPACK_PACKAGE_EXECUTABLES "${PROJECT_NAME}" "${PROJECT_NAME}")
|
||||
SET(CPACK_SOURCE_PACKAGE_FILE_NAME "${PROJECT_NAME}-${TORQUE_APP_VERSION_STRING}")
|
||||
#SET(CPACK_SOURCE_STRIP_FILES "")
|
||||
INCLUDE(CPack)
|
||||
# only enable zips for now
|
||||
set(CPACK_BINARY_NSIS OFF CACHE INTERNAL "" FORCE)
|
||||
set(CPACK_BINARY_ZIP ON CACHE INTERNAL "" FORCE)
|
||||
set(CPACK_SOURCE_ZIP OFF CACHE INTERNAL "" FORCE)
|
||||
SET(CPACK_GENERATOR "ZIP")
|
||||
SET(CPACK_PACKAGE_VENDOR "${PROJECT_NAME}")
|
||||
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PROJECT_NAME}")
|
||||
SET(CPACK_INCLUDE_TOPLEVEL_DIRECTORY 1)
|
||||
SET(CPACK_OUTPUT_FILE_PREFIX "${projectDir}/packages/${PROJECT_NAME}")
|
||||
SET(CPACK_PACKAGE_INSTALL_DIRECTORY "")
|
||||
#SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/ReadMe.txt")
|
||||
#SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/Copyright.txt")
|
||||
SET(CPACK_PACKAGE_VERSION_MAJOR "${TORQUE_APP_VERSION_MAJOR}")
|
||||
SET(CPACK_PACKAGE_VERSION_MINOR "${TORQUE_APP_VERSION_MINOR}")
|
||||
SET(CPACK_PACKAGE_VERSION_PATCH "${TORQUE_APP_VERSION_PATCH}")
|
||||
#SET(CPACK_PACKAGE_EXECUTABLES "${PROJECT_NAME}" "${PROJECT_NAME}")
|
||||
SET(CPACK_SOURCE_PACKAGE_FILE_NAME "${PROJECT_NAME}-${TORQUE_APP_VERSION_STRING}")
|
||||
#SET(CPACK_SOURCE_STRIP_FILES "")
|
||||
endmacro()
|
||||
# always static for now
|
||||
set(TORQUE_STATIC ON)
|
||||
#option(TORQUE_STATIC "enables or disable static" OFF)
|
||||
|
||||
if(WIN32)
|
||||
# default disabled warnings: 4018;4100;4121;4127;4130;4244;4245;4389;4511;4512;4800;
|
||||
set(TORQUE_CXX_FLAGS "/MP /O2 /Ob2 /Oi /Ot /Oy /GT /Zi /W4 /nologo /GF /EHsc /GS- /Gy- /Qpar- /arch:SSE2 /fp:fast /fp:except- /GR /Zc:wchar_t-" CACHE TYPE STRING)
|
||||
mark_as_advanced(TORQUE_CXX_FLAGS)
|
||||
set(TORQUE_CXX_FLAGS "/MP /O2 /Ob2 /Oi /Ot /Oy /GT /Zi /W4 /nologo /GF /EHsc /GS- /Gy- /Qpar- /arch:SSE2 /fp:fast /fp:except- /GR /Zc:wchar_t- /wd4018 /wd4100 /wd4121 /wd4127 /wd4130 /wd4244 /wd4245 /wd4389 /wd4511 /wd4512 /wd4800 /wd4995 /D_CRT_SECURE_NO_WARNINGS " CACHE TYPE STRING)
|
||||
mark_as_advanced(TORQUE_CXX_FLAGS)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TORQUE_CXX_FLAGS}")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_CXX_FLAGS}")
|
||||
#set(CMAKE_EXE_LINKER_FLAGS "/OPT:NOREF")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "/LARGEADDRESSAWARE")
|
||||
#set(STATIC_LIBRARY_FLAGS "/OPT:NOREF")
|
||||
|
||||
# Force static runtime libraries
|
||||
if(TORQUE_STATIC)
|
||||
FOREACH(flag
|
||||
CMAKE_C_FLAGS_RELEASE
|
||||
CMAKE_C_FLAGS_RELWITHDEBINFO
|
||||
CMAKE_C_FLAGS_DEBUG
|
||||
CMAKE_C_FLAGS_DEBUG_INIT
|
||||
CMAKE_CXX_FLAGS_RELEASE
|
||||
CMAKE_CXX_FLAGS_RELWITHDEBINFO
|
||||
CMAKE_CXX_FLAGS_DEBUG
|
||||
CMAKE_CXX_FLAGS_DEBUG_INIT)
|
||||
STRING(REPLACE "/MD" "/MT" "${flag}" "${${flag}}")
|
||||
SET("${flag}" "${${flag}} /EHsc")
|
||||
ENDFOREACH()
|
||||
endif()
|
||||
if(TORQUE_STATIC)
|
||||
FOREACH(flag
|
||||
CMAKE_C_FLAGS_RELEASE
|
||||
CMAKE_C_FLAGS_RELWITHDEBINFO
|
||||
CMAKE_C_FLAGS_DEBUG
|
||||
CMAKE_C_FLAGS_DEBUG_INIT
|
||||
CMAKE_CXX_FLAGS_RELEASE
|
||||
CMAKE_CXX_FLAGS_RELWITHDEBINFO
|
||||
CMAKE_CXX_FLAGS_DEBUG
|
||||
CMAKE_CXX_FLAGS_DEBUG_INIT)
|
||||
STRING(REPLACE "/MD" "/MT" "${flag}" "${${flag}}")
|
||||
SET("${flag}" "${${flag}} /EHsc")
|
||||
ENDFOREACH()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
||||
# fix the debug/release subfolders on windows
|
||||
if(MSVC)
|
||||
FOREACH(CONF ${CMAKE_CONFIGURATION_TYPES})
|
||||
# Go uppercase (DEBUG, RELEASE...)
|
||||
STRING(TOUPPER "${CONF}" CONF)
|
||||
#SET("CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${CONF}" "${projectOutDir}")
|
||||
SET("CMAKE_RUNTIME_OUTPUT_DIRECTORY_${CONF}" "${projectOutDir}")
|
||||
ENDFOREACH()
|
||||
FOREACH(CONF ${CMAKE_CONFIGURATION_TYPES})
|
||||
# Go uppercase (DEBUG, RELEASE...)
|
||||
STRING(TOUPPER "${CONF}" CONF)
|
||||
#SET("CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${CONF}" "${projectOutDir}")
|
||||
SET("CMAKE_RUNTIME_OUTPUT_DIRECTORY_${CONF}" "${projectOutDir}")
|
||||
ENDFOREACH()
|
||||
endif()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue