add cmake support
This commit is contained in:
250
Simulations/CMakeLists.txt
Normal file
250
Simulations/CMakeLists.txt
Normal file
@@ -0,0 +1,250 @@
|
||||
set(PROJECT_NAME Simulations)
|
||||
|
||||
################################################################################
|
||||
# Source groups
|
||||
################################################################################
|
||||
set(no_group_source_files
|
||||
"../readme.txt"
|
||||
)
|
||||
source_group("" FILES ${no_group_source_files})
|
||||
|
||||
set(Headers
|
||||
"DrawingUtilitiesClass.h"
|
||||
"MassSpringSystemSimulator.h"
|
||||
"Simulator.h"
|
||||
"TemplateSimulator.h"
|
||||
"util/FFmpeg.h"
|
||||
"util/matrixbase.h"
|
||||
"util/quaternion.h"
|
||||
"util/timer.h"
|
||||
"util/util.h"
|
||||
"util/vectorbase.h"
|
||||
)
|
||||
source_group("Headers" FILES ${Headers})
|
||||
|
||||
set(Sources
|
||||
"TemplateSimulator.cpp"
|
||||
"util/FFmpeg.cpp"
|
||||
"util/util.cpp"
|
||||
)
|
||||
source_group("Sources" FILES ${Sources})
|
||||
|
||||
set(ALL_FILES
|
||||
${no_group_source_files}
|
||||
${Headers}
|
||||
${Sources}
|
||||
)
|
||||
|
||||
################################################################################
|
||||
# Target
|
||||
################################################################################
|
||||
add_library(${PROJECT_NAME} STATIC ${ALL_FILES})
|
||||
|
||||
use_props(${PROJECT_NAME} "${CMAKE_CONFIGURATION_TYPES}" "${DEFAULT_CXX_PROPS}")
|
||||
set(ROOT_NAMESPACE Simulations)
|
||||
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES
|
||||
VS_GLOBAL_KEYWORD "Win32Proj"
|
||||
)
|
||||
################################################################################
|
||||
# Target name
|
||||
################################################################################
|
||||
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES
|
||||
TARGET_NAME_DEBUG "${PROJECT_NAME}"
|
||||
TARGET_NAME_RELEASE "${PROJECT_NAME}"
|
||||
)
|
||||
elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES
|
||||
TARGET_NAME_DEBUG "${PROJECT_NAME}"
|
||||
TARGET_NAME_RELEASE "${PROJECT_NAME}"
|
||||
)
|
||||
endif()
|
||||
################################################################################
|
||||
# Output directory
|
||||
################################################################################
|
||||
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES
|
||||
OUTPUT_DIRECTORY_DEBUG "${CMAKE_SOURCE_DIR}/${CMAKE_VS_PLATFORM_NAME}/$<CONFIG>/"
|
||||
OUTPUT_DIRECTORY_RELEASE "${CMAKE_SOURCE_DIR}/${CMAKE_VS_PLATFORM_NAME}/$<CONFIG>/"
|
||||
)
|
||||
elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES
|
||||
OUTPUT_DIRECTORY_DEBUG "${CMAKE_SOURCE_DIR}/${CMAKE_VS_PLATFORM_NAME}/$<CONFIG>/"
|
||||
OUTPUT_DIRECTORY_RELEASE "${CMAKE_SOURCE_DIR}/${CMAKE_VS_PLATFORM_NAME}/$<CONFIG>/"
|
||||
)
|
||||
endif()
|
||||
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES
|
||||
INTERPROCEDURAL_OPTIMIZATION_RELEASE "TRUE"
|
||||
)
|
||||
elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES
|
||||
INTERPROCEDURAL_OPTIMIZATION_RELEASE "TRUE"
|
||||
)
|
||||
endif()
|
||||
################################################################################
|
||||
# Include directories
|
||||
################################################################################
|
||||
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
|
||||
target_include_directories(${PROJECT_NAME} PUBLIC
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/home/kookroach/Documents/Uni/WS23-24/physX/game-physics/DirectXTK/Inc;"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/home/kookroach/Documents/Uni/WS23-24/physX/game-physics/DXUT11/Core;"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/home/kookroach/Documents/Uni/WS23-24/physX/game-physics/DXUT11/Optional;"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/home/kookroach/Documents/Uni/WS23-24/physX/game-physics/Effects11/inc;"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/home/kookroach/Documents/Uni/WS23-24/physX/game-physics/AntTweakBar/include"
|
||||
)
|
||||
elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
|
||||
target_include_directories(${PROJECT_NAME} PUBLIC
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/home/kookroach/Documents/Uni/WS23-24/physX/game-physics/DirectXTK/Inc;"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/home/kookroach/Documents/Uni/WS23-24/physX/game-physics/DXUT11/Core;"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/home/kookroach/Documents/Uni/WS23-24/physX/game-physics/DXUT11/Optional;"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/home/kookroach/Documents/Uni/WS23-24/physX/game-physics/Effects11/inc;"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/home/kookroach/Documents/Uni/WS23-24/physX/game-physics/AntTweakBar/include"
|
||||
)
|
||||
endif()
|
||||
|
||||
################################################################################
|
||||
# Compile definitions
|
||||
################################################################################
|
||||
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
|
||||
target_compile_definitions(${PROJECT_NAME} PRIVATE
|
||||
"$<$<CONFIG:Debug>:"
|
||||
"_DEBUG"
|
||||
">"
|
||||
"$<$<CONFIG:Release>:"
|
||||
"NDEBUG"
|
||||
">"
|
||||
"WIN32;"
|
||||
"NOMINMAX;"
|
||||
"_CONSOLE;"
|
||||
"UNICODE;"
|
||||
"_UNICODE"
|
||||
)
|
||||
elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
|
||||
target_compile_definitions(${PROJECT_NAME} PRIVATE
|
||||
"$<$<CONFIG:Debug>:"
|
||||
"_DEBUG"
|
||||
">"
|
||||
"$<$<CONFIG:Release>:"
|
||||
"NDEBUG"
|
||||
">"
|
||||
"WIN32;"
|
||||
"NOMINMAX;"
|
||||
"_CONSOLE;"
|
||||
"UNICODE;"
|
||||
"_UNICODE"
|
||||
)
|
||||
endif()
|
||||
|
||||
################################################################################
|
||||
# Compile and link options
|
||||
################################################################################
|
||||
if(MSVC)
|
||||
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
|
||||
target_compile_options(${PROJECT_NAME} PRIVATE
|
||||
$<$<CONFIG:Debug>:
|
||||
/Od
|
||||
>
|
||||
$<$<CONFIG:Release>:
|
||||
/O2;
|
||||
/Oi;
|
||||
/Gy
|
||||
>
|
||||
/W3;
|
||||
${DEFAULT_CXX_DEBUG_INFORMATION_FORMAT};
|
||||
${DEFAULT_CXX_EXCEPTION_HANDLING};
|
||||
/Y-
|
||||
)
|
||||
elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
|
||||
target_compile_options(${PROJECT_NAME} PRIVATE
|
||||
$<$<CONFIG:Debug>:
|
||||
/Od
|
||||
>
|
||||
$<$<CONFIG:Release>:
|
||||
/O2;
|
||||
/Oi;
|
||||
/Gy
|
||||
>
|
||||
/W3;
|
||||
${DEFAULT_CXX_DEBUG_INFORMATION_FORMAT};
|
||||
${DEFAULT_CXX_EXCEPTION_HANDLING};
|
||||
/Y-
|
||||
)
|
||||
endif()
|
||||
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
|
||||
target_link_options(${PROJECT_NAME} PRIVATE
|
||||
$<$<CONFIG:Release>:
|
||||
/OPT:REF;
|
||||
/OPT:ICF
|
||||
>
|
||||
/SUBSYSTEM:CONSOLE
|
||||
)
|
||||
elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
|
||||
target_link_options(${PROJECT_NAME} PRIVATE
|
||||
$<$<CONFIG:Release>:
|
||||
/OPT:REF;
|
||||
/OPT:ICF
|
||||
>
|
||||
/SUBSYSTEM:CONSOLE
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
################################################################################
|
||||
# Dependencies
|
||||
################################################################################
|
||||
# Link with other targets.
|
||||
target_link_libraries(${PROJECT_NAME} PUBLIC
|
||||
AntTweakBar
|
||||
DirectXTK_Desktop_2022
|
||||
DXUT
|
||||
DXUTOpt
|
||||
Effects11
|
||||
)
|
||||
|
||||
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
|
||||
set(ADDITIONAL_LIBRARY_DEPENDENCIES
|
||||
"D3DCompiler;"
|
||||
"Mf;"
|
||||
"mfuuid;"
|
||||
"Mfplat;"
|
||||
"Mfreadwrite;"
|
||||
"comctl32;"
|
||||
"kernel32;"
|
||||
"user32;"
|
||||
"gdi32;"
|
||||
"winspool;"
|
||||
"comdlg32;"
|
||||
"advapi32;"
|
||||
"shell32;"
|
||||
"ole32;"
|
||||
"oleaut32;"
|
||||
"uuid;"
|
||||
"odbc32;"
|
||||
"odbccp32"
|
||||
)
|
||||
elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
|
||||
set(ADDITIONAL_LIBRARY_DEPENDENCIES
|
||||
"D3DCompiler;"
|
||||
"Mf;"
|
||||
"mfuuid;"
|
||||
"Mfplat;"
|
||||
"Mfreadwrite;"
|
||||
"comctl32;"
|
||||
"kernel32;"
|
||||
"user32;"
|
||||
"gdi32;"
|
||||
"winspool;"
|
||||
"comdlg32;"
|
||||
"advapi32;"
|
||||
"shell32;"
|
||||
"ole32;"
|
||||
"oleaut32;"
|
||||
"uuid;"
|
||||
"odbc32;"
|
||||
"odbccp32"
|
||||
)
|
||||
endif()
|
||||
target_link_libraries(${PROJECT_NAME} PUBLIC "${ADDITIONAL_LIBRARY_DEPENDENCIES}")
|
||||
|
||||
Reference in New Issue
Block a user