From 1d2b2852d68d3c799dd5015bfdc6ef142dc9ee0a Mon Sep 17 00:00:00 2001 From: Julien Malik <julien.malik@c-s.fr> Date: Sun, 12 Jun 2011 10:25:00 +0200 Subject: [PATCH] ENH: improve build system --- CMake/Definitions.cmake | 33 +++++++++++++ CMake/ParseArguments.cmake | 32 +++++++++++++ CMake/WrapperMacros.cmake | 17 +++++++ CMakeLists.txt | 47 +------------------ .../ApplicationLauncherQt/CMakeLists.txt | 2 + Code/Wrappers/CMakeLists.txt | 2 + Code/Wrappers/QtWidget/CMakeLists.txt | 2 +- Example/Addition/CMakeLists.txt | 6 --- Example/CMakeLists.txt | 6 ++- Example/Smoothing/CMakeLists.txt | 6 --- Example/{Addition => }/otbAddition.cxx | 0 Example/{Smoothing => }/otbSmoothing.cxx | 0 Testing/Core/CMakeLists.txt | 1 + Testing/QtWidget/CMakeLists.txt | 4 ++ 14 files changed, 97 insertions(+), 61 deletions(-) create mode 100644 CMake/Definitions.cmake create mode 100644 CMake/ParseArguments.cmake create mode 100644 CMake/WrapperMacros.cmake delete mode 100644 Example/Addition/CMakeLists.txt delete mode 100644 Example/Smoothing/CMakeLists.txt rename Example/{Addition => }/otbAddition.cxx (100%) rename Example/{Smoothing => }/otbSmoothing.cxx (100%) diff --git a/CMake/Definitions.cmake b/CMake/Definitions.cmake new file mode 100644 index 0000000000..0ccc28c8bd --- /dev/null +++ b/CMake/Definitions.cmake @@ -0,0 +1,33 @@ + +# ensure WIN32 definition +IF(WIN32) + ADD_DEFINITIONS(-DWIN32) +ENDIF(WIN32) + + +# On Visual Studio 8 MS deprecated C. This removes all 1.276E1265 security +# warnings +IF(WIN32) + IF(NOT CYGWIN) + IF(NOT MINGW) + ADD_DEFINITIONS( + -D_CRT_FAR_MAPPINGS_NO_DEPRECATE + -D_CRT_IS_WCTYPE_NO_DEPRECATE + -D_CRT_MANAGED_FP_NO_DEPRECATE + -D_CRT_NONSTDC_NO_DEPRECATE + -D_CRT_SECURE_NO_DEPRECATE + -D_CRT_SECURE_NO_DEPRECATE_GLOBALS + -D_CRT_SETERRORMODE_BEEP_SLEEP_NO_DEPRECATE + -D_CRT_TIME_FUNCTIONS_NO_DEPRECATE + -D_CRT_VCCLRIT_NO_DEPRECATE + -D_SCL_SECURE_NO_DEPRECATE + ) + + IF (MSVC) + ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS) + ADD_DEFINITIONS(-D_CRT_NONSTDC_NO_WARNING) + ENDIF(MSVC) + + ENDIF(NOT MINGW) + ENDIF(NOT CYGWIN) +ENDIF(WIN32) \ No newline at end of file diff --git a/CMake/ParseArguments.cmake b/CMake/ParseArguments.cmake new file mode 100644 index 0000000000..da5000e58e --- /dev/null +++ b/CMake/ParseArguments.cmake @@ -0,0 +1,32 @@ +# Source : http://www.itk.org/Wiki/CMakeMacroParseArguments + +MACRO(PARSE_ARGUMENTS prefix arg_names option_names) + SET(DEFAULT_ARGS) + FOREACH(arg_name ${arg_names}) + SET(${prefix}_${arg_name}) + ENDFOREACH(arg_name) + FOREACH(option ${option_names}) + SET(${prefix}_${option} FALSE) + ENDFOREACH(option) + + SET(current_arg_name DEFAULT_ARGS) + SET(current_arg_list) + FOREACH(arg ${ARGN}) + SET(larg_names ${arg_names}) + LIST(FIND larg_names "${arg}" is_arg_name) + IF (is_arg_name GREATER -1) + SET(${prefix}_${current_arg_name} ${current_arg_list}) + SET(current_arg_name ${arg}) + SET(current_arg_list) + ELSE (is_arg_name GREATER -1) + SET(loption_names ${option_names}) + LIST(FIND loption_names "${arg}" is_option) + IF (is_option GREATER -1) + SET(${prefix}_${arg} TRUE) + ELSE (is_option GREATER -1) + SET(current_arg_list ${current_arg_list} ${arg}) + ENDIF (is_option GREATER -1) + ENDIF (is_arg_name GREATER -1) + ENDFOREACH(arg) + SET(${prefix}_${current_arg_name} ${current_arg_list}) +ENDMACRO(PARSE_ARGUMENTS) \ No newline at end of file diff --git a/CMake/WrapperMacros.cmake b/CMake/WrapperMacros.cmake new file mode 100644 index 0000000000..4ea434d38c --- /dev/null +++ b/CMake/WrapperMacros.cmake @@ -0,0 +1,17 @@ +include(ParseArguments) + +macro(OTB_CREATE_APPLICATION) + PARSE_ARGUMENTS( + APPLICATION + "NAME;SOURCES;INCLUDE_DIRS;LINK_LIBRARIES" + "" + ${ARGN}) + + set( APPLICATION_TARGET_NAME otbapp_${APPLICATION_NAME} ) + + include_directories(${CMAKE_SOURCE_DIR}/Code/Core) + include_directories(${APPLICATION_INCLUDE_DIRS}) + add_library(${APPLICATION_TARGET_NAME} MODULE ${APPLICATION_SOURCES}) + target_link_libraries(${APPLICATION_TARGET_NAME} OTBWrapperCore ${APPLICATION_LINK_LIBRARIES}) + set_target_properties(${APPLICATION_TARGET_NAME} PROPERTIES PREFIX "") +endmacro(OTB_CREATE_APPLICATION) \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 306b78796d..43286e412c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,42 +6,12 @@ IF(COMMAND CMAKE_POLICY) CMAKE_POLICY(SET CMP0003 NEW) ENDIF(COMMAND CMAKE_POLICY) -# ensure WIN32 definition -IF(WIN32) - ADD_DEFINITIONS(-DWIN32) -ENDIF(WIN32) - # Path to additional CMake modules SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/CMake ${CMAKE_MODULE_PATH}) -# On Visual Studio 8 MS deprecated C. This removes all 1.276E1265 security -# warnings -IF(WIN32) - IF(NOT CYGWIN) - IF(NOT MINGW) - ADD_DEFINITIONS( - -D_CRT_FAR_MAPPINGS_NO_DEPRECATE - -D_CRT_IS_WCTYPE_NO_DEPRECATE - -D_CRT_MANAGED_FP_NO_DEPRECATE - -D_CRT_NONSTDC_NO_DEPRECATE - -D_CRT_SECURE_NO_DEPRECATE - -D_CRT_SECURE_NO_DEPRECATE_GLOBALS - -D_CRT_SETERRORMODE_BEEP_SLEEP_NO_DEPRECATE - -D_CRT_TIME_FUNCTIONS_NO_DEPRECATE - -D_CRT_VCCLRIT_NO_DEPRECATE - -D_SCL_SECURE_NO_DEPRECATE - ) - - IF (MSVC) - ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS) - ADD_DEFINITIONS(-D_CRT_NONSTDC_NO_WARNING) - ENDIF(MSVC) - - ENDIF(NOT MINGW) - ENDIF(NOT CYGWIN) -ENDIF(WIN32) +include(Definitions) # Link to the Orfeo ToolBox FIND_PACKAGE(OTB REQUIRED PATHS /usr/lib/otb ) @@ -53,7 +23,6 @@ IF(OTB_USE_QT) FIND_PACKAGE(Qt4 REQUIRED) SET(QT_USE_QTXML 1) INCLUDE(${QT_USE_FILE}) - INCLUDE_DIRECTORIES(${QT_INCLUDE_DIRS}) ENDIF(OTB_USE_QT) OPTION(OTB_USE_SWIG "Generate Qt wrappers for Applications" ON) @@ -63,22 +32,8 @@ INCLUDE(${SWIG_USE_FILE}) FIND_PACKAGE(PythonLibs REQUIRED) FIND_PACKAGE(PythonInterp REQUIRED) -#----------------------------------------------------------------------------- -#Build shared libraries for monteverdi -#By default, import the option from the OTB configuration SET(BUILD_SHARED_LIBS ${OTB_BUILD_SHARED_LIBS}) -INCLUDE_DIRECTORIES( - ${CMAKE_CURRENT_SOURCE_DIR}/Code - ${CMAKE_CURRENT_SOURCE_DIR}/Code/Core - ${CMAKE_CURRENT_SOURCE_DIR}/Code/Wrappers - ${CMAKE_CURRENT_SOURCE_DIR}/Code/Wrappers/QtWidget - ${CMAKE_CURRENT_BINARY_DIR} - ${CMAKE_CURRENT_BINARY_DIR}/Code - ${CMAKE_CURRENT_BINARY_DIR}/Code/Wrappers - ${CMAKE_CURRENT_BINARY_DIR}/Code/Wrappers/QtWidget -) - ADD_SUBDIRECTORY(Code) ADD_SUBDIRECTORY(Example) diff --git a/Code/Wrappers/ApplicationLauncherQt/CMakeLists.txt b/Code/Wrappers/ApplicationLauncherQt/CMakeLists.txt index 8943b137bb..ba822eeaa3 100644 --- a/Code/Wrappers/ApplicationLauncherQt/CMakeLists.txt +++ b/Code/Wrappers/ApplicationLauncherQt/CMakeLists.txt @@ -1,3 +1,5 @@ +INCLUDE_DIRECTORIES(${QT_INCLUDE_DIRS}) +INCLUDE_DIRECTORIES(../QtWidget) SET( SRCS otbApplicationLauncherQt.cxx ) diff --git a/Code/Wrappers/CMakeLists.txt b/Code/Wrappers/CMakeLists.txt index f247fc1735..f3b5897812 100644 --- a/Code/Wrappers/CMakeLists.txt +++ b/Code/Wrappers/CMakeLists.txt @@ -1,3 +1,5 @@ +INCLUDE_DIRECTORIES(../Core) + ADD_SUBDIRECTORY(ApplicationLauncherQt) ADD_SUBDIRECTORY(QtWidget) ADD_SUBDIRECTORY(SWIG) diff --git a/Code/Wrappers/QtWidget/CMakeLists.txt b/Code/Wrappers/QtWidget/CMakeLists.txt index 11ff545652..f7ebaddfb3 100644 --- a/Code/Wrappers/QtWidget/CMakeLists.txt +++ b/Code/Wrappers/QtWidget/CMakeLists.txt @@ -1,4 +1,4 @@ - +INCLUDE_DIRECTORIES(${QT_INCLUDE_DIRS}) FILE(GLOB srcs "*.cxx") SET( WrappersQtWidget_MOC_HDR diff --git a/Example/Addition/CMakeLists.txt b/Example/Addition/CMakeLists.txt deleted file mode 100644 index 947c7083fe..0000000000 --- a/Example/Addition/CMakeLists.txt +++ /dev/null @@ -1,6 +0,0 @@ - -SET( SRCS - otbAddition.cxx ) - -ADD_LIBRARY(OTBWrapperAddition otbAddition.cxx) -TARGET_LINK_LIBRARIES(OTBWrapperAddition OTBWrapperCore) diff --git a/Example/CMakeLists.txt b/Example/CMakeLists.txt index ec66495bcf..04e9d75bd3 100644 --- a/Example/CMakeLists.txt +++ b/Example/CMakeLists.txt @@ -1,2 +1,4 @@ -add_subdirectory(Addition) -add_subdirectory(Smoothing) \ No newline at end of file +include(WrapperMacros) + +OTB_CREATE_APPLICATION(NAME Addition SOURCES otbAddition.cxx) +OTB_CREATE_APPLICATION(NAME Smoothing SOURCES otbSmoothing.cxx) \ No newline at end of file diff --git a/Example/Smoothing/CMakeLists.txt b/Example/Smoothing/CMakeLists.txt deleted file mode 100644 index adc89f52a7..0000000000 --- a/Example/Smoothing/CMakeLists.txt +++ /dev/null @@ -1,6 +0,0 @@ - -SET( SRCS - otbSmoothing.cxx ) - -ADD_LIBRARY(OTBWrapperSmoothing otbSmoothing.cxx) -TARGET_LINK_LIBRARIES(OTBWrapperSmoothing OTBWrapperCore) diff --git a/Example/Addition/otbAddition.cxx b/Example/otbAddition.cxx similarity index 100% rename from Example/Addition/otbAddition.cxx rename to Example/otbAddition.cxx diff --git a/Example/Smoothing/otbSmoothing.cxx b/Example/otbSmoothing.cxx similarity index 100% rename from Example/Smoothing/otbSmoothing.cxx rename to Example/otbSmoothing.cxx diff --git a/Testing/Core/CMakeLists.txt b/Testing/Core/CMakeLists.txt index 5ad0ed9191..323639eab8 100644 --- a/Testing/Core/CMakeLists.txt +++ b/Testing/Core/CMakeLists.txt @@ -76,5 +76,6 @@ otbWrapperParameterTest.cxx otbWrapperApplicationRegistryTest.cxx ) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/Code/Core) ADD_EXECUTABLE(otbWrapperTests ${Wrapper_SRCS}) TARGET_LINK_LIBRARIES(otbWrapperTests OTBIO OTBCommon ITKIO ITKCommon OTBTesting OTBWrapperCore) diff --git a/Testing/QtWidget/CMakeLists.txt b/Testing/QtWidget/CMakeLists.txt index 5cb6767c3d..526b98e409 100644 --- a/Testing/QtWidget/CMakeLists.txt +++ b/Testing/QtWidget/CMakeLists.txt @@ -8,6 +8,10 @@ SET(WrapperQtWidget_SRCS otbWrapperQtWidgetTests.cxx otbWrapperQtWidgetParameterFactory.cxx) +INCLUDE_DIRECTORIES(${QT_INCLUDE_DIRS}) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/Code/Core) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/Code/Wrappers/QtWidget) + ADD_EXECUTABLE(otbWrapperQtWidgetTests ${WrapperQtWidget_SRCS}) TARGET_LINK_LIBRARIES(otbWrapperQtWidgetTests OTBIO -- GitLab