Add CMake Configuration for ActorEditor

Name the project AtlasMisc as the atlas Object is shared.
Use the `target_sources` to add sources based on their targets.

Not working:
- Linking to wxWidgets find_package target
  - Terrain.obj : `error LNK2019: Verweis auf nicht aufgel├Âstes externes Symbol ""int const wxEVT_NULL" (?wxEVT_NULL@@3HB)" in Funktion ""void __cdecl dynamic initializer for 'private: static struct wxEventTableEntry const * const TerrainSidebar::sm_eventTableEntries''(void)" (??__E?sm_eventTableEntries@TerrainSidebar@@0QBUwxEventTableEntry@@B@@YAXXZ)".`

Working:
- Using find_package extra variables to find most of the windows ext. libs
- excluding SDL2 and Boost, which use the custom find_prebuild_library function
This commit is contained in:
Cayleb-Ordo 2025-11-12 22:51:49 +01:00
parent d58f6cb4ce
commit 386c696db8
37 changed files with 634 additions and 1 deletions

View file

@ -143,6 +143,11 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
include(SetupWindowsLibs)
endif()
# Add subprojects
if(NOT without-atlas)
add_subdirectory(${CMAKE_SOURCE_DIR}/source/tools/atlas/)
endif()
# Add doxygen target
if(build-docs)
add_subdirectory(${CMAKE_SOURCE_DIR}/docs/doxygen)

View file

@ -1,3 +1,50 @@
cmake_minimum_required(VERSION 3.25.1...4.0.0)
# 0AD Specific Functions
# 0AD Specific Functions
# Add Precompiled Headers. If no target is given, this macro will fail with a FATAL_ERROR.
# rationale: we need one PCH per static lib, since one global header would increase dependencies. To that end, we can either include them as
# "projectdir/precompiled.h", or add "source/PCH/projectdir" to the include path and put the PCH there. The latter is better because many
# projects contain several dirs and it's unclear where there the PCH should be stored. This way is also a bit easier to use in that
# source files always include "precompiled.h".
# Notes:
# * Visual Assist manages to use the project include path and can correctly open these files from the IDE.
# * precompiled.cpp (needed to "Create" the PCH) also goes in the abovementioned dir.
# * using CMakes precompiled Header is not possible, as it does not allow for a custom name like used here.
function(add_pch)
set(single_args TARGET PCH_DIR)
cmake_parse_arguments(args "" "${single_args}" "" ${ARGN})
if(NOT args_TARGET)
message(FATAL_ERROR "add_pch: Missing target!!")
endif()
include(PrecompiledHeader)
if(NOT args_PCH_DIR)
get_target_property(source_root ${args_TARGET} SOURCE_DIR)
set(args_PCH_DIR ${source_root}/pch/${args_TARGET})
endif()
# Put the project-specific PCH directory at the start of the include path, so '#include "precompiled.h"' will look in there first
target_include_directories(${args_TARGET}
BEFORE PRIVATE
${args_PCH_DIR}/
)
if (CMAKE_GENERATOR MATCHES "Visual Studio")
set(pch_header "precompiled.h")
elseif(CMAKE_GENERATOR MATCHES "Xcode")
set(pch_header "../${args_PCH_DIR}/precompiled.h")
else()
set(pch_header "${args_PCH_DIR}/precompiled.h")
endif()
precompile_header(${args_TARGET} ${pch_header} ${args_PCH_DIR}/precompiled.cpp)
target_sources(${args_TARGET}
PRIVATE
${args_PCH_DIR}/precompiled.cpp
${args_PCH_DIR}/precompiled.h
)
target_compile_definitions(${args_TARGET}
PRIVATE
CONFIG_ENABLE_PCH=1
)
endfunction(add_pch)

View file

@ -0,0 +1,54 @@
function(find_prebuild_library _name)
include(FindPackageHandleStandardArgs)
set(multi_args COMPONENTS PATHS)
set(single_args INC_PATH VERSION)
cmake_parse_arguments(args "${multi_args}" "${single_args}" "" ${ARGN})
string(TOLOWER ${_name} libname)
string(TOUPPER ${_name} target_name)
# ++++++++ Handle COMPONENTS +++++++++++++++++++++
if(args_COMPONENTS)
endif()
# ++++++++ Find relevant elements ++++++++++++++++
find_library(Lib${_name} NAMES ${libname} ${libname}${args_VERSION})
if(NOT args_INC_PATH)
find_path(Lib${_name}_inc NAMES ${libname}.h PATHS ${0AD_EXT_LIBDIR}/${_name}/include/)
# recursive add all paths beneth included...
else()
set(Lib${_name}_inc ${args_INC_PATH})
endif()
if(NOT Lib${_name}_inc)
set(Lib${_name}_inc ${0AD_EXT_LIBDIR}/${_name}/include/)
endif()
find_package_handle_standard_args(Lib${_name} REQUIRED_VARS Lib${_name})
message(STATUS "${Lib${_name}} - ${Lib${_name}_inc} - ${Lib${_name}_FOUND} - ${target_name}::${target_name}")
if (Lib${_name}_FOUND)
mark_as_advanced(
Lib${_name}
Lib${_name}_inc
)
endif()
if(Lib${_name} MATCHES "LibBoost")
add_library(${target_name}::headers INTERFACE IMPORTED)
set_target_properties(${target_name}::headers PROPERTIES
IMPORTED_LOCATION ${Lib${_name}_inc}
INTERFACE_INCLUDE_DIRECTORIES ${Lib${_name}_inc}
)
elseif(Lib${_name} MATCHES "SDL2")
add_library(${target_name}::${target_name} UNKNOWN IMPORTED)
set_target_properties(${target_name}::${target_name} PROPERTIES
IMPORTED_LOCATION ${Lib${_name}}
INTERFACE_INCLUDE_DIRECTORIES ${Lib${_name}_inc}/SDL
)
elseif (Lib${_name} AND NOT TARGET ${target_name}::${target_name})
add_library(${target_name}::${target_name} UNKNOWN IMPORTED)
set_target_properties(${target_name}::${target_name} PROPERTIES
IMPORTED_LOCATION ${Lib${_name}}
INTERFACE_INCLUDE_DIRECTORIES ${Lib${_name}_inc}
)
endif()
endfunction()

View file

@ -0,0 +1,42 @@
function(precompile_header _target _header _source)
set(single_args FORCE_INCLUDE)
cmake_parse_arguments(args "" "${single_args}" "" ${ARGN})
get_target_property(target_compiler_FLAGS ${_target} COMPILE_OPTIONS)
get_target_property(target_bindir ${_target} BINARY_DIR)
set(gcc_out ${target_bindir}/${_header}.gch)
if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR CMAKE_C_COMPILER_ID STREQUAL "MSVC")
# message(STATUS "Precompiled: ${_target} ${_header} ${_source}")
# target_compile_options(${_target}
# PRIVATE
# /Yu${_header}
# )
# set_source_files_properties(${_source}/precompiled.cpp PROPERTIES
# COMPILE_FLAGS
# /Yc${_header}
# )
# if(${args_FORCE_INCLUDE})
# set_source_files_properties(${_source}/precompiled.cpp
# PROPERTIES
# COMPILE_FLAGS
# /FI${_header}
# )
# endif()
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU|AppleClang")
message(STATUS "C++")
add_custom_command(
OUTPUT "${gcc_out}"
COMMAND ${CMAKE_CXX_COMPILER} "${target_compiler_FLAGS}" -x c++-header -o "${gcc_out}" -c "${_header}"
DEPENDS "${_header}"
COMMENT "Precompiling ${_header} for ${_target} (C++)"
)
elseif(CMAKE_C_COMPILER_ID MATCHES "Clang|GNU|AppleClang")
message(STATUS "C")
add_custom_command(
OUTPUT "${gcc_out}"
COMMAND ${CMAKE_C_COMPILER} "${target_compiler_FLAGS}" -x c-header -o "${gcc_out}" -c "${_header}"
DEPENDS "${_header}"
COMMENT "Precompiling ${_header} for ${_target} (C)"
)
endif()
endfunction()

View file

@ -0,0 +1,7 @@
cmake_minimum_required(VERSION 3.25.1...4.0.0)
target_sources(ActorEditor
PRIVATE
$<$<PLATFORM_ID:Windows>: ActorEditor.rc> # Caution, the blank before the File is needed
ActorEditor.cpp
)

View file

@ -0,0 +1,15 @@
cmake_minimum_required(VERSION 3.25.1...4.0.0)
target_sources(AtlasObject
PRIVATE
AtlasObject.h
AtlasObjectImpl.cpp
AtlasObjectImpl.h
AtlasObjectJS.cpp
AtlasObjectText.cpp
AtlasObjectText.h
AtlasObjectXML.cpp
JSONSpiritInclude.h
)
add_subdirectory(tests/)

View file

@ -0,0 +1,6 @@
cmake_minimum_required(VERSION 3.25.1...4.0.0)
target_sources(AtlasObject
PRIVATE
test_AtlasObjectXML.h
)

View file

@ -0,0 +1,15 @@
cmake_minimum_required(VERSION 3.25.1...4.0.0)
target_sources(AtlasUI
PRIVATE
ActorEditor.cpp
ActorEditor.h
ActorEditorListCtrl.cpp
ActorEditorListCtrl.h
AnimListEditor.cpp
AnimListEditor.h
PropListEditor.cpp
PropListEditor.h
TexListEditor.cpp
TexListEditor.h
)

View file

@ -0,0 +1,7 @@
cmake_minimum_required(VERSION 3.25.1...4.0.0)
add_subdirectory(ActorEditor/)
add_subdirectory(CustomControls/)
add_subdirectory(General/)
add_subdirectory(Misc/)
add_subdirectory(ScenarioEditor/)

View file

@ -0,0 +1,9 @@
cmake_minimum_required(VERSION 3.25.1...4.0.0)
target_sources(AtlasUI
PRIVATE
ActionButton.cpp
ActionButton.h
ToolButton.cpp
ToolButton.h
)

View file

@ -0,0 +1,14 @@
cmake_minimum_required(VERSION 3.25.1...4.0.0)
add_subdirectory(Buttons/)
add_subdirectory(Canvas/)
add_subdirectory(ColorDialog/)
add_subdirectory(DraggableListCtrl/)
add_subdirectory(EditableListCtrl/)
add_subdirectory(FileHistory/)
add_subdirectory(HighResTimer/)
add_subdirectory(MapDialog/)
add_subdirectory(MapResizeDialog/)
add_subdirectory(SnapSplitterWindow/)
add_subdirectory(VirtualDirTreeCtrl/)
add_subdirectory(Windows/)

View file

@ -0,0 +1,7 @@
cmake_minimum_required(VERSION 3.25.1...4.0.0)
target_sources(AtlasUI
PRIVATE
Canvas.cpp
Canvas.h
)

View file

@ -0,0 +1,7 @@
cmake_minimum_required(VERSION 3.25.1...4.0.0)
target_sources(AtlasUI
PRIVATE
ColorDialog.cpp
ColorDialog.h
)

View file

@ -0,0 +1,9 @@
cmake_minimum_required(VERSION 3.25.1...4.0.0)
target_sources(AtlasUI
PRIVATE
DraggableListCtrl.cpp
DraggableListCtrl.h
DraggableListCtrlCommands.cpp
DraggableListCtrlCommands.h
)

View file

@ -0,0 +1,19 @@
cmake_minimum_required(VERSION 3.25.1...4.0.0)
target_sources(AtlasUI
PRIVATE
EditableListCtrl.cpp
EditableListCtrl.h
EditableListCtrlCommands.cpp
EditableListCtrlCommands.h
FieldEditCtrl.cpp
FieldEditCtrl.h
ListCtrlValidator.cpp
ListCtrlValidator.h
QuickComboBox.cpp
QuickComboBox.h
QuickFileCtrl.cpp
QuickFileCtrl.h
QuickTextCtrl.cpp
QuickTextCtrl.h
)

View file

@ -0,0 +1,7 @@
cmake_minimum_required(VERSION 3.25.1...4.0.0)
target_sources(AtlasUI
PRIVATE
FileHistory.cpp
FileHistory.h
)

View file

@ -0,0 +1,7 @@
cmake_minimum_required(VERSION 3.25.1...4.0.0)
target_sources(AtlasUI
PRIVATE
HighResTimer.cpp
HighResTimer.h
)

View file

@ -0,0 +1,7 @@
cmake_minimum_required(VERSION 3.25.1...4.0.0)
target_sources(AtlasUI
PRIVATE
MapDialog.cpp
MapDialog.h
)

View file

@ -0,0 +1,9 @@
cmake_minimum_required(VERSION 3.25.1...4.0.0)
target_sources(AtlasUI
PRIVATE
MapResizeDialog.cpp
MapResizeDialog.h
PseudoMiniMapPanel.cpp
PseudoMiniMapPanel.h
)

View file

@ -0,0 +1,7 @@
cmake_minimum_required(VERSION 3.25.1...4.0.0)
target_sources(AtlasUI
PRIVATE
SnapSplitterWindow.cpp
SnapSplitterWindow.h
)

View file

@ -0,0 +1,7 @@
cmake_minimum_required(VERSION 3.25.1...4.0.0)
target_sources(AtlasUI
PRIVATE
virtualdirtreectrl.cpp
virtualdirtreectrl.h
)

View file

@ -0,0 +1,9 @@
cmake_minimum_required(VERSION 3.25.1...4.0.0)
target_sources(AtlasUI
PRIVATE
AtlasDialog.cpp
AtlasDialog.h
AtlasWindow.cpp
AtlasWindow.h
)

View file

@ -0,0 +1,18 @@
cmake_minimum_required(VERSION 3.25.1...4.0.0)
target_sources(AtlasUI
PRIVATE
AtlasClipboard.cpp
AtlasClipboard.h
AtlasEventLoop.cpp
AtlasEventLoop.h
AtlasWindowCommand.cpp
AtlasWindowCommand.h
AtlasWindowCommandProc.cpp
AtlasWindowCommandProc.h
Datafile.cpp
Datafile.h
IAtlasSerialiser.h
Observable.cpp
Observable.h
)

View file

@ -0,0 +1,15 @@
cmake_minimum_required(VERSION 3.25.1...4.0.0)
target_sources(AtlasUI
PRIVATE
DLLInterface.cpp
DLLInterface.h
KeyMap.cpp
KeyMap.h
actored.h
precompiled.cpp
precompiled.h
$<$<PLATFORM_ID:Windows>: atlas.rc> # Caution, the blank before the File is needed
)
add_subdirectory(Graphics/)

View file

@ -0,0 +1,14 @@
cmake_minimum_required(VERSION 3.25.1...4.0.0)
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
include(GNUInstallDirs)
install(
FILES
${CMAKE_CURRENT_SOURCE_DIR}/ActorEditor.ico
${CMAKE_CURRENT_SOURCE_DIR}/ArchiveViewer.ico
${CMAKE_CURRENT_SOURCE_DIR}/FileConverter.ico
${CMAKE_CURRENT_SOURCE_DIR}/ScenarioEditor.ico
DESTINATION
${CMAKE_INSTALL_DATADIR}/0ad/tools/ActorEditor/icons
)
endif()

View file

@ -0,0 +1,12 @@
cmake_minimum_required(VERSION 3.25.1...4.0.0)
target_sources(AtlasUI
PRIVATE
ScenarioEditor.cpp
ScenarioEditor.h
SectionLayout.cpp
SectionLayout.h
)
add_subdirectory(Sections/)
add_subdirectory(Tools/)

View file

@ -0,0 +1,9 @@
cmake_minimum_required(VERSION 3.25.1...4.0.0)
add_subdirectory(Cinema/)
add_subdirectory(Common/)
add_subdirectory(Environment/)
add_subdirectory(Map/)
add_subdirectory(Object/)
add_subdirectory(Player/)
add_subdirectory(Terrain/)

View file

@ -0,0 +1,7 @@
cmake_minimum_required(VERSION 3.25.1...4.0.0)
target_sources(AtlasUI
PRIVATE
Cinema.cpp
Cinema.h
)

View file

@ -0,0 +1,7 @@
cmake_minimum_required(VERSION 3.25.1...4.0.0)
target_sources(AtlasUI
PRIVATE
Sidebar.cpp
Sidebar.h
)

View file

@ -0,0 +1,9 @@
cmake_minimum_required(VERSION 3.25.1...4.0.0)
target_sources(AtlasUI
PRIVATE
Environment.cpp
Environment.h
LightControl.cpp
LightControl.h
)

View file

@ -0,0 +1,7 @@
cmake_minimum_required(VERSION 3.25.1...4.0.0)
target_sources(AtlasUI
PRIVATE
Map.cpp
Map.h
)

View file

@ -0,0 +1,9 @@
cmake_minimum_required(VERSION 3.25.1...4.0.0)
target_sources(AtlasUI
PRIVATE
Object.cpp
Object.h
VariationControl.cpp
VariationControl.h
)

View file

@ -0,0 +1,7 @@
cmake_minimum_required(VERSION 3.25.1...4.0.0)
target_sources(AtlasUI
PRIVATE
Player.cpp
Player.h
)

View file

@ -0,0 +1,7 @@
cmake_minimum_required(VERSION 3.25.1...4.0.0)
target_sources(AtlasUI
PRIVATE
Terrain.cpp
Terrain.h
)

View file

@ -0,0 +1,19 @@
cmake_minimum_required(VERSION 3.25.1...4.0.0)
target_sources(AtlasUI
PRIVATE
ActorViewerTool.cpp
AlterElevation.cpp
FillTerrain.cpp
FlattenElevation.cpp
PaintTerrain.cpp
PickWaterHeight.cpp
PikeElevation.cpp
PlaceObject.cpp
ReplaceTerrain.cpp
SmoothElevation.cpp
TransformObject.cpp
TransformPath.cpp
)
add_subdirectory(Common/)

View file

@ -0,0 +1,13 @@
cmake_minimum_required(VERSION 3.25.1...4.0.0)
target_sources(AtlasUI
PRIVATE
Brushes.cpp
Brushes.h
MiscState.cpp
MiscState.h
ObjectSettings.cpp
ObjectSettings.h
Tools.cpp
Tools.h
)

View file

@ -0,0 +1,164 @@
cmake_minimum_required(VERSION 3.25.1...4.0.0)
project(AtlasMisc LANGUAGES CXX)
include(0ad-Functions)
# +++++++++++++++++++++ Project Macros ++++++++++++++++++++
macro(set_atlas_build_flags _target)
target_link_options(${_target}
PRIVATE
$<$<PLATFORM_ID:Linux,FreeBSD>:-fPIC>
$<$<PLATFORM_ID:Linux>:-rdynamic>
)
target_compile_options(${_target}
PRIVATE
$<$<PLATFORM_ID:Linux,FreeBSD>:-fPIC>
$<$<PLATFORM_ID:Linux,Darwin>:-Wno-unused-local-typedefs>
)
target_link_libraries(${_target}
PRIVATE
$<$<PLATFORM_ID:Windows>:winmm delayimp>
)
endmacro()
# +++++++++++++++++++++ Required Packages ++++++++++++++++++
find_package(wxWidgets 3.0.4 REQUIRED COMPONENTS gl xml)
find_package(Iconv REQUIRED)
find_package(ZLIB REQUIRED)
find_package(LibXml2 REQUIRED)
if(UNIX)
find_package(Boost 1.69.0 REQUIRED CONFIG)
find_package(SDL2 2.0.2 REQUIRED)
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
find_package(X11 REQUIRED)
endif()
elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows")
include(FindPrebuildLibrary)
find_prebuild_library(Sdl2)
find_prebuild_library(Boost INC_PATH ${0AD_EXT_LIBDIR}/boost/include/)
endif()
# +++++++++++++++++++++ Project Targets ++++++++++++++++++++
add_library(AtlasObject STATIC)
add_library(AtlasUI SHARED)
add_executable(ActorEditor)
# Set Macos Bundle and Windows Window Application
set_target_properties(ActorEditor
PROPERTIES
WIN32_EXECUTABLE $<$<PLATFORM_ID:Windows>:TRUE>
MACOSX_BUNDLE $<$<PLATFORM_ID:Darwin>:TRUE>
)
add_subdirectory(AtlasFrontends/)
add_subdirectory(AtlasObject/)
add_subdirectory(AtlasUI/)
# +++++++++++++++++++++ Set Output Paths +++++++++++++++++++
set_target_properties(AtlasObject
PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/binaries/system
)
set_target_properties(AtlasUI
PROPERTIES
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/binaries/system
)
set_target_properties(ActorEditor
PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/binaries/system
)
# +++++++++++++++++++++ AtlasObject ++++++++++++++++++++++++
set_atlas_build_flags(AtlasObject)
target_include_directories(AtlasObject PRIVATE ${CMAKE_SOURCE_DIR}/source)
target_link_libraries(AtlasObject
PRIVATE
${BUILD_FLAGS_TARGET}
$<$<PLATFORM_ID:Linux>:Boost::headers>
$<$<PLATFORM_ID:Windows>:BOOST::headers>
Iconv::Iconv
LibXml2::LibXml2
SDL2::SDL2
)
# +++++++++++++++++++++ AtlasUI ++++++++++++++++++++++++++++
if(NOT without-pch)
add_pch(TARGET AtlasUI PCH_DIR ${PROJECT_SOURCE_DIR}/AtlasUI/Misc)
else()
target_compile_definitions(AtlasUI PRIVATE CONFIG_ENABLE_PCH=0)
set_target_properties(AtlasUI PROPERTIES
DISABLE_PRECOMPILE_HEADERS TRUE
)
target_include_directories(AtlasUI
BEFORE PRIVATE
${PROJECT_SOURCE_DIR}/AtlasUI/Misc
)
endif()
set_atlas_build_flags(AtlasUI)
target_include_directories(AtlasUI PRIVATE ${CMAKE_SOURCE_DIR}/source/)
target_link_libraries(AtlasUI
PRIVATE
${BUILD_FLAGS_TARGET}
LibXml2::LibXml2
Iconv::Iconv
$<$<PLATFORM_ID:Linux>:Boost::headers>
$<$<PLATFORM_ID:Windows>:BOOST::headers>
SDL2::SDL2
ZLIB::ZLIB
AtlasObject
$<$<PLATFORM_ID:Linux>:X11::X11>
wxWidgets::wxWidgets
)
target_compile_definitions(AtlasUI
PRIVATE
$<$<VERSION_GREATER_EQUAL:${wxWidgets_VERSION},3.3.0>:wxNO_REQUIRE_LITERAL_MSGIDS>
)
# +++++++++++++++++++++ ActorEditor ++++++++++++++++++++++++
target_include_directories(ActorEditor
PRIVATE
${PROJECT_SOURCE_DIR}/
)
target_link_libraries(ActorEditor
PRIVATE
${BUILD_FLAGS_TARGET}
$<$<NOT:$<PLATFORM_ID:Windows>>:AtlasObject>
AtlasUI
)
target_link_options(ActorEditor
PRIVATE
$<$<AND:$<PLATFORM_ID:Windows>,$<STREQUAL:${ARCH},amd64>>:/manifestdependency:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df'>
$<$<AND:$<PLATFORM_ID:Windows>,$<STREQUAL:${ARCH},x86>>:/manifestdependency:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='X86' publicKeyToken='6595b64144ccf1df'>
$<$<PLATFORM_ID:Darwin>:-arch ${MACOS_ARCH}>
)
target_compile_options(ActorEditor
PRIVATE
$<$<PLATFORM_ID:Darwin>:-arch ${MACOS_ARCH}>
)
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
set_target_properties(ActorEditor PROPERTIES
XCODE_ATTRIBUTE_ARCHS ${MACOS_ARCH}
)
endif()
# get_target_property(win32 ActorEditor WIN32_EXECUTABLE)
# get_target_property(macos ActorEditor MACOSX_BUNDLE)
# file(GENERATE OUTPUT debugexpr.txt CONTENT "${win32} ${macos}" TARGET ActorEditor)
# include(CMakePrintHelpers)
# cmake_print_properties(TARGETS AtlasUI
# PROPERTIES
# # INCLUDE_DIRECTORIES
# # LINK_LIBRARIES
# # COMPILE_OPTIONS
# # COMPILE_DEFINITIONS
# # WIN32_EXECUTABLE
# # MACOSX_BUNDLE
# # IMPORTED_LOCATION
# # INTERFACE_INCLUDE_DIRECTORIES
# # CXX_EXTENSIONS
# # CXX_STANDARD_REQUIRED
# )