From 3eb189581183390e5a27440c6c4e3acf62fb39ef Mon Sep 17 00:00:00 2001 From: Donny Lawrence Date: Wed, 5 Jun 2019 12:52:50 -0500 Subject: [PATCH] CMake: Use a generator expression to mitigate make's warning spam on the Xcode generator. --- cmake/macros/Python.cmake | 9 ++++++++- dtool/CompilerFlags.cmake | 16 +++++++++++++--- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/cmake/macros/Python.cmake b/cmake/macros/Python.cmake index cb8edad227..959e24c861 100644 --- a/cmake/macros/Python.cmake +++ b/cmake/macros/Python.cmake @@ -51,7 +51,14 @@ function(add_python_target target) target_link_libraries(${target} PKG::PYTHON) if(BUILD_SHARED_LIBS) - set(_outdir "${PROJECT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${slash_namespace}") + if(CMAKE_GENERATOR STREQUAL "Xcode") + # This is explained in CompilerFlags.cmake + set(intdir $$(EFFECTIVE_PLATFORM_NAME)) + else() + set(intdir ${CMAKE_CFG_INTDIR}) + endif() + + set(_outdir "${PROJECT_BINARY_DIR}/${intdir}/${slash_namespace}") set_target_properties(${target} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${_outdir}" diff --git a/dtool/CompilerFlags.cmake b/dtool/CompilerFlags.cmake index 644135dd72..ba8e5a829d 100644 --- a/dtool/CompilerFlags.cmake +++ b/dtool/CompilerFlags.cmake @@ -29,9 +29,19 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON) # Set up the output directory structure, mimicking that of makepanda set(CMAKE_BINARY_DIR "${CMAKE_BINARY_DIR}/cmake") -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin") -set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib") -set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib") + +if(CMAKE_GENERATOR STREQUAL "Xcode") + # On the Xcode generator, CMake generates a separate make target definition for + # every config, so it ends up spamming warnings once we try to build. + set(intdir $$(EFFECTIVE_PLATFORM_NAME)) +else() + set(intdir ${CMAKE_CFG_INTDIR}) +endif() + +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${intdir}/bin") +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${intdir}/lib") +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${intdir}/lib") + set(MODULE_DESTINATION "lib") # Runtime code assumes that dynamic modules have a "lib" prefix; Windows