diff --git a/cMake/FreeCadMacros.cmake b/cMake/FreeCadMacros.cmake index 70a7a1aac..d263bae39 100644 --- a/cMake/FreeCadMacros.cmake +++ b/cMake/FreeCadMacros.cmake @@ -204,6 +204,7 @@ MACRO(GET_MSVC_PRECOMPILED_SOURCE PrecompiledSource SourcesVar) ENDIF(MSVC) ENDMACRO(GET_MSVC_PRECOMPILED_SOURCE) +# Macro to replace all the binary output locations MACRO(SET_BIN_DIR ProjectName OutputName OutputDir) set_target_properties(${ProjectName} PROPERTIES OUTPUT_NAME ${OutputName}) if(WIN32) @@ -215,6 +216,7 @@ MACRO(SET_BIN_DIR ProjectName OutputName OutputDir) endif(WIN32) if(MSVC_IDE) + # dirty hack to avoid Debug/Release subdirectory set_target_properties(${ProjectName} PROPERTIES PREFIX "../") endif(MSVC_IDE) ENDMACRO(SET_BIN_DIR) diff --git a/src/App/CMakeLists.txt b/src/App/CMakeLists.txt index cbf116649..94d486a25 100644 --- a/src/App/CMakeLists.txt +++ b/src/App/CMakeLists.txt @@ -177,19 +177,7 @@ add_library(FreeCADApp SHARED ${FreeCADApp_SRCS}) target_link_libraries(FreeCADApp ${FreeCADApp_LIBS}) -# Note this is IDE specific, not necessarily platform specific -if(MSVC) - set_target_properties(FreeCADApp PROPERTIES DEBUG_OUTPUT_NAME "FreeCADAppD") - set_target_properties(FreeCADApp PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) - # dirty hack to avoid Debug/Release subdirectory - set_target_properties(FreeCADApp PROPERTIES PREFIX "../") -elseif(MINGW) - set_target_properties(FreeCADApp PROPERTIES DEBUG_OUTPUT_NAME "FreeCADAppD") - set_target_properties(FreeCADApp PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) -else(MSVC) - set_target_properties(FreeCADApp PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) - set_target_properties(FreeCADApp PROPERTIES INSTALL_RPATH ${INSTALL_RPATH}) -endif(MSVC) +SET_BIN_DIR(FreeCADApp "FreeCADApp" "/bin") if(WIN32) INSTALL(TARGETS FreeCADApp diff --git a/src/Base/CMakeLists.txt b/src/Base/CMakeLists.txt index 31111e3b0..41f581af3 100644 --- a/src/Base/CMakeLists.txt +++ b/src/Base/CMakeLists.txt @@ -319,19 +319,7 @@ add_library(FreeCADBase SHARED ${FreeCADBase_SRCS}) target_link_libraries(FreeCADBase ${FreeCADBase_LIBS}) -# Note this is IDE specific, not necessarily platform specific -if(MSVC) - set_target_properties(FreeCADBase PROPERTIES DEBUG_OUTPUT_NAME "FreeCADBaseD") - set_target_properties(FreeCADBase PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) - # dirty hack to avoid Debug/Release subdirectory - set_target_properties(FreeCADBase PROPERTIES PREFIX "../") -elseif(MINGW) - set_target_properties(FreeCADBase PROPERTIES DEBUG_OUTPUT_NAME "FreeCADBaseD") - set_target_properties(FreeCADBase PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) -else(MSVC) - set_target_properties(FreeCADBase PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) - set_target_properties(FreeCADBase PROPERTIES INSTALL_RPATH ${INSTALL_RPATH}) -endif(MSVC) +SET_BIN_DIR(FreeCADBase "FreeCADBase" "/bin") if(WIN32) INSTALL(TARGETS FreeCADBase diff --git a/src/Gui/CMakeLists.txt b/src/Gui/CMakeLists.txt index 0dcfded9f..17d6a4d69 100644 --- a/src/Gui/CMakeLists.txt +++ b/src/Gui/CMakeLists.txt @@ -932,19 +932,7 @@ add_library(FreeCADGui SHARED ${FreeCADGui_SRCS}) target_link_libraries(FreeCADGui ${FreeCADGui_LIBS}) -# Note this is IDE specific, not necessarily platform specific -if(MSVC) - set_target_properties(FreeCADGui PROPERTIES DEBUG_OUTPUT_NAME "FreeCADGuiD") - set_target_properties(FreeCADGui PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) - # dirty hack to avoid Debug/Release subdirectory - set_target_properties(FreeCADGui PROPERTIES PREFIX "../") -elseif(MINGW) - set_target_properties(FreeCADGui PROPERTIES DEBUG_OUTPUT_NAME "FreeCADGuiD") - set_target_properties(FreeCADGui PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) -else(MSVC) - set_target_properties(FreeCADGui PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) - set_target_properties(FreeCADGui PROPERTIES INSTALL_RPATH ${INSTALL_RPATH}) -endif(MSVC) +SET_BIN_DIR(FreeCADGui "FreeCADGui" "/bin") if(WIN32) INSTALL(TARGETS FreeCADGui diff --git a/src/Main/CMakeLists.txt b/src/Main/CMakeLists.txt index 458c166af..577360033 100644 --- a/src/Main/CMakeLists.txt +++ b/src/Main/CMakeLists.txt @@ -45,22 +45,7 @@ if(FREECAD_BUILD_GUI) add_executable(FreeCADMain WIN32 ${FreeCAD_SRCS}) target_link_libraries(FreeCADMain ${FreeCAD_LIBS}) - # Note this is IDE specific, not necessarily platform specific - if(MSVC) - set_target_properties(FreeCADMain PROPERTIES OUTPUT_NAME "FreeCAD") - set_target_properties(FreeCADMain PROPERTIES DEBUG_OUTPUT_NAME "FreeCADD") - # dirty hack to avoid Debug/Release subdirectory - set_target_properties(FreeCADMain PROPERTIES PREFIX "../") - set_target_properties(FreeCADMain PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) - elseif(MINGW) - set_target_properties(FreeCADMain PROPERTIES OUTPUT_NAME "FreeCAD") - set_target_properties(FreeCADMain PROPERTIES DEBUG_OUTPUT_NAME "FreeCADD") - set_target_properties(FreeCADMain PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) - else(MSVC) - set_target_properties(FreeCADMain PROPERTIES OUTPUT_NAME "FreeCAD") - set_target_properties(FreeCADMain PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) - set_target_properties(FreeCADMain PROPERTIES INSTALL_RPATH ${INSTALL_RPATH}) - endif(MSVC) + SET_BIN_DIR(FreeCADMain "FreeCADMain" "/bin") if(WIN32) INSTALL(TARGETS FreeCADMain @@ -86,22 +71,7 @@ target_link_libraries(FreeCADMainCmd ${QT_LIBRARIES} ) -# Note this is IDE specific, not necessarily platform specific -if(MSVC) - set_target_properties(FreeCADMainCmd PROPERTIES OUTPUT_NAME "FreeCADCmd") - set_target_properties(FreeCADMainCmd PROPERTIES DEBUG_OUTPUT_NAME "FreeCADCmdD") - # dirty hack to avoid Debug/Release subdirectory - set_target_properties(FreeCADMainCmd PROPERTIES PREFIX "../") - set_target_properties(FreeCADMainCmd PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) -elseif(MINGW) - set_target_properties(FreeCADMainCmd PROPERTIES OUTPUT_NAME "FreeCADCmd") - set_target_properties(FreeCADMainCmd PROPERTIES DEBUG_OUTPUT_NAME "FreeCADCmdD") - set_target_properties(FreeCADMainCmd PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) -else(MSVC) - set_target_properties(FreeCADMainCmd PROPERTIES OUTPUT_NAME "FreeCADCmd") - set_target_properties(FreeCADMainCmd PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) - set_target_properties(FreeCADMainCmd PROPERTIES INSTALL_RPATH ${INSTALL_RPATH}) -endif(MSVC) +SET_BIN_DIR(FreeCADMainCmd "FreeCADMainCmd" "/bin") if(WIN32) INSTALL(TARGETS FreeCADMainCmd @@ -124,26 +94,10 @@ add_library(FreeCADMainPy SHARED ${FreeCADMainPy_SRCS}) target_link_libraries(FreeCADMainPy FreeCADApp) -# Note this is IDE specific, not necessarily platform specific -if(MSVC) - set_target_properties(FreeCADMainPy PROPERTIES OUTPUT_NAME "FreeCAD") - set_target_properties(FreeCADMainPy PROPERTIES DEBUG_OUTPUT_NAME "FreeCAD_d") +SET_BIN_DIR(FreeCADMainPy "FreeCADMainPy" "/bin") +if(WIN32) set_target_properties(FreeCADMainPy PROPERTIES SUFFIX ".pyd") - # dirty hack to avoid Debug/Release subdirectory - set_target_properties(FreeCADMainPy PROPERTIES PREFIX "../") - set_target_properties(FreeCADMainPy PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) -elseif(MINGW) - set_target_properties(FreeCADMainPy PROPERTIES OUTPUT_NAME "FreeCAD") - set_target_properties(FreeCADMainPy PROPERTIES DEBUG_OUTPUT_NAME "FreeCAD_d") - set_target_properties(FreeCADMainPy PROPERTIES SUFFIX ".pyd") - set_target_properties(FreeCADMainPy PROPERTIES PREFIX "") - set_target_properties(FreeCADMainPy PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) -else(MSVC) - set_target_properties(FreeCADMainPy PROPERTIES OUTPUT_NAME "FreeCAD") - set_target_properties(FreeCADMainPy PROPERTIES PREFIX "") - set_target_properties(FreeCADMainPy PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) - set_target_properties(FreeCADMainPy PROPERTIES INSTALL_RPATH ${INSTALL_RPATH}) -endif(MSVC) +endif(WIN32) if(WIN32) INSTALL(TARGETS FreeCADMainPy @@ -167,27 +121,11 @@ if(FREECAD_BUILD_GUI) target_link_libraries(FreeCADGuiPy FreeCADGui) - # Note this is IDE specific, not necessarily platform specific - if(MSVC) - set_target_properties(FreeCADGuiPy PROPERTIES OUTPUT_NAME "FreeCADGui") - set_target_properties(FreeCADGuiPy PROPERTIES DEBUG_OUTPUT_NAME "FreeCADGui_d") + SET_BIN_DIR(FreeCADGuiPy "FreeCADGuiPy" "/bin") + if(WIN32) set_target_properties(FreeCADGuiPy PROPERTIES SUFFIX ".pyd") - # dirty hack to avoid Debug/Release subdirectory - set_target_properties(FreeCADGuiPy PROPERTIES PREFIX "../") - set_target_properties(FreeCADGuiPy PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) - elseif(MINGW) - set_target_properties(FreeCADGuiPy PROPERTIES OUTPUT_NAME "FreeCADGui") - set_target_properties(FreeCADGuiPy PROPERTIES DEBUG_OUTPUT_NAME "FreeCADGui_d") - set_target_properties(FreeCADGuiPy PROPERTIES SUFFIX ".pyd") - set_target_properties(FreeCADGuiPy PROPERTIES PREFIX "") - set_target_properties(FreeCADGuiPy PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) - else(MSVC) - set_target_properties(FreeCADGuiPy PROPERTIES OUTPUT_NAME "FreeCADGui") - set_target_properties(FreeCADGuiPy PROPERTIES PREFIX "") - set_target_properties(FreeCADGuiPy PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) - set_target_properties(FreeCADGuiPy PROPERTIES INSTALL_RPATH ${INSTALL_RPATH}) - endif(MSVC) - + endif(WIN32) + if(WIN32) INSTALL(TARGETS FreeCADGuiPy RUNTIME DESTINATION bin diff --git a/src/Tools/_TEMPLATE_/App/CMakeLists.txt b/src/Tools/_TEMPLATE_/App/CMakeLists.txt index a06ef307c..667c84ce8 100644 --- a/src/Tools/_TEMPLATE_/App/CMakeLists.txt +++ b/src/Tools/_TEMPLATE_/App/CMakeLists.txt @@ -27,20 +27,9 @@ fc_target_copy_resource(_TEMPLATE_ ${CMAKE_BINARY_DIR}/Mod/_TEMPLATE_ Init.py) -if(MSVC) +SET_BIN_DIR(_TEMPLATE_ "_TEMPLATE_" "/Mod/_TEMPLATE_") +if(WIN32) set_target_properties(_TEMPLATE_ PROPERTIES SUFFIX ".pyd") - set_target_properties(_TEMPLATE_ PROPERTIES DEBUG_OUTPUT_NAME "_TEMPLATE__d") - set_target_properties(_TEMPLATE_ PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/Mod/_TEMPLATE_) - set_target_properties(_TEMPLATE_ PROPERTIES PREFIX "../") -elseif(MINGW) - set_target_properties(_TEMPLATE_ PROPERTIES SUFFIX ".pyd") - set_target_properties(_TEMPLATE_ PROPERTIES DEBUG_OUTPUT_NAME "_TEMPLATE__d") - set_target_properties(_TEMPLATE_ PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/Mod/_TEMPLATE_) - set_target_properties(_TEMPLATE_ PROPERTIES PREFIX "") -else(MSVC) - set_target_properties(_TEMPLATE_ PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/Mod/_TEMPLATE_) - set_target_properties(_TEMPLATE_ PROPERTIES PREFIX "") - set_target_properties(Fem PROPERTIES INSTALL_RPATH ${INSTALL_RPATH}) -endif(MSVC) +endif(WIN32) install(TARGETS _TEMPLATE_ DESTINATION lib) diff --git a/src/Tools/_TEMPLATE_/Gui/CMakeLists.txt b/src/Tools/_TEMPLATE_/Gui/CMakeLists.txt index 1924dd310..733a4dc35 100644 --- a/src/Tools/_TEMPLATE_/Gui/CMakeLists.txt +++ b/src/Tools/_TEMPLATE_/Gui/CMakeLists.txt @@ -37,20 +37,9 @@ fc_target_copy_resource(_TEMPLATE_Gui ${CMAKE_BINARY_DIR}/Mod/_TEMPLATE_ InitGui.py) -if(MSVC) +SET_BIN_DIR(_TEMPLATE_Gui "_TEMPLATE_Gui" "/Mod/_TEMPLATE_") +if(WIN32) set_target_properties(_TEMPLATE_Gui PROPERTIES SUFFIX ".pyd") - set_target_properties(_TEMPLATE_Gui PROPERTIES DEBUG_OUTPUT_NAME "_TEMPLATE_Gui_d") - set_target_properties(_TEMPLATE_Gui PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/Mod/_TEMPLATE_) - set_target_properties(_TEMPLATE_Gui PROPERTIES PREFIX "../") -elseif(MINGW) - set_target_properties(_TEMPLATE_Gui PROPERTIES SUFFIX ".pyd") - set_target_properties(_TEMPLATE_Gui PROPERTIES DEBUG_OUTPUT_NAME "_TEMPLATE_Gui_d") - set_target_properties(_TEMPLATE_Gui PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/Mod/_TEMPLATE_) - set_target_properties(_TEMPLATE_Gui PROPERTIES PREFIX "") -else(MSVC) - set_target_properties(_TEMPLATE_Gui PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/Mod/_TEMPLATE_) - set_target_properties(_TEMPLATE_Gui PROPERTIES PREFIX "") - set_target_properties(Fem PROPERTIES INSTALL_RPATH ${INSTALL_RPATH}) -endif(MSVC) - +endif(WIN32) + install(TARGETS _TEMPLATE_Gui DESTINATION lib)