carla/Unreal/CMakeLists.txt

300 lines
5.5 KiB
CMake
Raw Normal View History

project (
carla-unreal
VERSION
${CARLA_VERSION}
LANGUAGES
CXX
DESCRIPTION
"Open-source simulator for autonomous driving research."
)
set (
CARLA_UE_PATH
2024-03-04 20:33:51 +08:00
${CARLA_WORKSPACE_PATH}/Unreal/CarlaUnreal
)
2024-03-07 00:20:13 +08:00
set (
CARLA_UE_PLUGINS_PATH
${CARLA_UE_PATH}/Plugins
)
set (
CARLA_UE_CARLA_PATH
${CARLA_UE_PLUGINS_PATH}/Carla
)
set (
CARLA_UE_CARLA_TOOLS_PATH
${CARLA_UE_PLUGINS_PATH}/CarlaTools
)
set (
CARLA_UE_PROJECT_PATH
2024-03-04 20:33:51 +08:00
${CARLA_UE_PATH}/CarlaUnreal.uproject
)
if (ENABLE_ROS2)
set (LAUNCH_ARGS ${LAUNCH_ARGS} --ros2)
endif()
if (WIN32)
set (
2024-03-11 19:30:24 +08:00
CARLA_UE_GENERATE_PROJECT_FILES_COMMAND
${CARLA_UNREAL_ENGINE_PATH}/GenerateProjectFiles.bat
2024-03-11 19:30:24 +08:00
-project=${CARLA_UE_PROJECT_PATH}
-CMakefile
-game
-engine
)
else ()
set (
2024-03-11 19:30:24 +08:00
CARLA_UE_GENERATE_PROJECT_FILES_COMMAND
${CARLA_UNREAL_ENGINE_PATH}/GenerateProjectFiles.sh
2024-03-11 19:30:24 +08:00
-project=${CARLA_UE_PROJECT_PATH}
-CMakefile
-game
-engine
)
endif ()
2024-03-07 00:20:13 +08:00
2024-03-08 00:11:15 +08:00
add_custom_command (
2024-03-12 18:01:37 +08:00
OUTPUT
${CARLA_UE_PATH}/CMakeLists.txt
2024-03-07 00:20:13 +08:00
COMMENT
"Generating UE project files for CARLA..."
COMMAND
2024-03-11 19:30:24 +08:00
${CARLA_UE_GENERATE_PROJECT_FILES_COMMAND}
# Remember to add this on most Unreal-related commands,
# otherwise nothing is printed while running the command:
USES_TERMINAL
2024-03-12 18:01:37 +08:00
VERBATIM
)
2024-03-07 00:20:13 +08:00
add_custom_target (
carla-unreal-generate-project-files
2024-03-11 19:30:24 +08:00
DEPENDS
${CARLA_UE_PATH}/CMakeLists.txt
2024-03-08 00:11:15 +08:00
)
set (
UE_DEPENDENCIES
2024-03-12 18:01:37 +08:00
carla-server
libsqlite3
Boost::asio
Boost::python
Boost::numpy
Boost::geometry
Boost::gil
Eigen3::Eigen
zlibstatic
png_static
rpc
)
set (
CARLA_UNREAL_INCLUDE_PATHS_FILE_PATH
${CMAKE_CURRENT_BINARY_DIR}/Includes.inc
)
set (
CARLA_UNREAL_INCLUDE_PATHS
${sqlite3_SOURCE_DIR}
)
foreach (UE_DEP ${UE_DEPENDENCIES})
list (
APPEND
CARLA_UNREAL_INCLUDE_PATHS
"$<TARGET_PROPERTY:${UE_DEP},INTERFACE_INCLUDE_DIRECTORIES>"
)
endforeach ()
set (
CARLA_UNREAL_LIBRARIES_PATHS_FILE_PATH
${CMAKE_CURRENT_BINARY_DIR}/Libraries.inc
2024-03-12 18:01:37 +08:00
)
set (
CARLA_UNREAL_LIBRARIES
$<TARGET_FILE:libsqlite3>
)
foreach (UE_DEP ${UE_DEPENDENCIES})
get_target_property (UE_DEP_TYPE ${UE_DEP} TYPE)
if (NOT ("${UE_DEP_TYPE}" STREQUAL "INTERFACE_LIBRARY"))
list (
APPEND
CARLA_UNREAL_LIBRARIES
"$<TARGET_FILE:${UE_DEP}>"
)
endif ()
endforeach ()
add_dependencies (
carla-unreal-generate-project-files
${UE_DEPENDENCIES}
)
if (CMAKE_TOOLCHAIN_FILE)
cmake_path (
ABSOLUTE_PATH
CMAKE_TOOLCHAIN_FILE
BASE_DIRECTORY
${CARLA_WORKSPACE_PATH}
NORMALIZE
OUTPUT_VARIABLE
TOOLCHAIN_FILE
)
set (
TOOLCHAIN_FILE_OPTION
--toolchain=${TOOLCHAIN_FILE}
)
else ()
set (TOOLCHAIN_FILE_OPTION)
endif ()
2024-03-08 00:11:15 +08:00
add_custom_command (
2024-03-12 18:01:37 +08:00
OUTPUT
${CARLA_UNREAL_INCLUDE_PATHS_FILE_PATH}
${CARLA_UNREAL_LIBRARIES_PATHS_FILE_PATH}
2024-03-08 00:11:15 +08:00
COMMENT
"Configuring Carla Unreal..."
COMMAND ${CMAKE_COMMAND} -E rm -f ${CARLA_UNREAL_INCLUDE_PATHS_FILE_PATH}
COMMAND ${CMAKE_COMMAND} -E echo "${CARLA_UNREAL_INCLUDE_PATHS}" >> ${CARLA_UNREAL_INCLUDE_PATHS_FILE_PATH}
COMMAND ${CMAKE_COMMAND} -E copy ${CARLA_UNREAL_INCLUDE_PATHS_FILE_PATH} ${CARLA_UE_CARLA_PATH}/Includes.def
COMMAND ${CMAKE_COMMAND} -E copy ${CARLA_UNREAL_INCLUDE_PATHS_FILE_PATH} ${CARLA_UE_CARLA_TOOLS_PATH}/Includes.def
COMMAND ${CMAKE_COMMAND} -E rm -f ${CARLA_UNREAL_LIBRARIES_PATHS_FILE_PATH}
COMMAND ${CMAKE_COMMAND} -E echo "${CARLA_UNREAL_LIBRARIES}" >> ${CARLA_UNREAL_LIBRARIES_PATHS_FILE_PATH}
COMMAND ${CMAKE_COMMAND} -E copy ${CARLA_UNREAL_LIBRARIES_PATHS_FILE_PATH} ${CARLA_UE_CARLA_PATH}/Libraries.def
COMMAND ${CMAKE_COMMAND} -E copy ${CARLA_UNREAL_LIBRARIES_PATHS_FILE_PATH} ${CARLA_UE_CARLA_TOOLS_PATH}/Libraries.def
COMMAND
2024-03-11 19:30:24 +08:00
${CMAKE_COMMAND}
-S ${CARLA_UE_PATH}
-B ${CMAKE_CURRENT_BINARY_DIR}
${TOOLCHAIN_FILE_OPTION}
USES_TERMINAL
2024-03-12 18:01:37 +08:00
VERBATIM
2024-03-08 00:11:15 +08:00
)
add_custom_target (
carla-unreal-configure
2024-03-07 00:20:13 +08:00
DEPENDS
${CARLA_UNREAL_INCLUDE_PATHS_FILE_PATH}
${CARLA_UNREAL_LIBRARIES_PATHS_FILE_PATH}
2024-03-08 00:11:15 +08:00
)
2024-03-12 18:01:37 +08:00
add_dependencies (
carla-unreal-configure
carla-unreal-generate-project-files
2024-03-12 18:01:37 +08:00
)
2024-03-08 00:11:15 +08:00
add_custom_command (
2024-03-12 18:01:37 +08:00
OUTPUT
${CMAKE_CURRENT_BINARY_DIR}/carla-unreal.stamp
2024-03-07 00:20:13 +08:00
COMMENT
2024-03-08 00:11:15 +08:00
"Building Carla Unreal..."
2024-03-07 00:20:13 +08:00
COMMAND
${CMAKE_COMMAND}
2024-03-08 00:11:15 +08:00
--build ${CMAKE_CURRENT_BINARY_DIR}
--target CarlaUnrealEditor
2024-03-11 19:30:24 +08:00
COMMAND
${CMAKE_COMMAND}
-E touch carla-unreal.stamp
USES_TERMINAL
2024-03-12 18:01:37 +08:00
VERBATIM
2024-03-08 00:11:15 +08:00
)
add_custom_target (
carla-unreal
2024-03-08 00:11:15 +08:00
DEPENDS
carla-unreal.stamp
2024-03-07 00:20:13 +08:00
)
2024-03-12 18:01:37 +08:00
add_dependencies (
carla-unreal
carla-unreal-configure
2024-03-12 18:01:37 +08:00
)
2024-03-11 16:20:27 +08:00
if (WIN32)
set (EXE_EXT .exe)
2024-03-11 16:13:55 +08:00
set (UE_SYSTEM_NAME Win64)
elseif (LINUX)
set (EXE_EXT)
2024-03-11 16:13:55 +08:00
set (UE_SYSTEM_NAME Linux)
elseif (APPLE)
set (EXE_EXT)
set (UE_SYSTEM_NAME Mac)
2024-03-11 16:13:55 +08:00
else ()
2024-03-13 22:38:31 +08:00
carla_error ("Unknown target system.")
2024-03-11 16:13:55 +08:00
endif ()
set (
UNREAL_EDITOR_PATH
${CARLA_UNREAL_ENGINE_PATH}/Engine/Binaries/${UE_SYSTEM_NAME}/UnrealEditor${EXE_EXT}
)
set (
LAUNCH_DEPENDENCIES
carla-unreal
)
if (BUILD_PYTHON_API)
list (
APPEND
LAUNCH_DEPENDENCIES
carla-python-api
)
endif ()
add_custom_target (
launch-only
2024-03-12 18:01:37 +08:00
COMMENT
"Launching Carla Unreal..."
COMMAND
${UNREAL_EDITOR_PATH}
2024-03-12 18:01:37 +08:00
${CARLA_UE_PROJECT_PATH}
-${CARLA_UNREAL_RHI}
${LAUNCH_ARGS}
USES_TERMINAL
VERBATIM
)
add_custom_target (
launch
COMMENT
"Launching Carla Unreal..."
COMMAND
${UNREAL_EDITOR_PATH}
${CARLA_UE_PROJECT_PATH}
-${CARLA_UNREAL_RHI}
${LAUNCH_ARGS}
USES_TERMINAL
VERBATIM
)
2024-03-12 18:01:37 +08:00
add_dependencies (
launch
${LAUNCH_DEPENDENCIES}
)
file (
MAKE_DIRECTORY
${CARLA_UE_PATH}/Content/Carla/ExportedMaps
)