[CMAKE] Get rid of the set_cpp macro

Instead of messing with global variables and the like, we introduce two target properties:
 - WITH_CXX_EXCEPTIONS: if you want to use C++ exceptions
 - WITH_CXX_RTTI: if you need RTTI in your module
You can use the newly introduced set_target_cpp_properties function, with WITH_EXCEPTIONS and WITH_RTTI arguments
We also introduce two libraries :
 - cpprt: for C++ runtime routines
 - cppstl: for the C++ standard template library

NB: On GCC, this requires to create imported libraries with the related built-in libraries:libsupc++, limingwex, libstdc++

Finally, we manage the relevant flags with the ad-hoc generator expressions

So, if you don't need exceptions, nor RTTI, nor use any runtime at all: you simply have nothing else to do than add your C++ file to your module
This commit is contained in:
Jérôme Gardou 2020-09-18 09:34:18 +02:00 committed by Jérôme Gardou
parent 980ce77316
commit d6ea8659c8
69 changed files with 193 additions and 259 deletions

View file

@ -1,6 +1,6 @@
set_cpp(WITH_RUNTIME)
add_executable(gdb2 gdb2.cpp)
target_link_libraries(gdb2 cpprt)
set_module_type(gdb2 win32cui)
add_importlibs(gdb2 user32 msvcrt kernel32)
add_cd_file(TARGET gdb2 DESTINATION reactos/system32 FOR all)

View file

@ -1,5 +1,4 @@
set_cpp(WITH_RUNTIME)
add_definitions(-D_ATL_NO_EXCEPTIONS)
include_directories(${REACTOS_SOURCE_DIR}/sdk/lib/atl)
@ -7,6 +6,6 @@ include_directories(${REACTOS_SOURCE_DIR}/sdk/lib/atl)
add_executable(shlextdbg shlextdbg.cpp shlextdbg.rc)
set_module_type(shlextdbg win32cui UNICODE)
target_link_libraries(shlextdbg uuid)
target_link_libraries(shlextdbg uuid cpprt)
add_importlibs(shlextdbg ole32 comctl32 shell32 user32 msvcrt kernel32)
add_cd_file(TARGET shlextdbg DESTINATION reactos/system32 FOR all)