Skip to content

Commit

Permalink
Re #5767. More CMake re-jigging to get include paths correct/minimal.
Browse files Browse the repository at this point in the history
  • Loading branch information
RussellTaylor committed Aug 24, 2012
1 parent 2f23575 commit 65c4ea8
Show file tree
Hide file tree
Showing 22 changed files with 195 additions and 603 deletions.
19 changes: 13 additions & 6 deletions Code/Mantid/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,13 @@ if( QWT_VERSION VERSION_LESS 5.0 OR QWT_VERSION VERSION_EQUAL 6.0 OR
message ( FATAL_ERROR "Qwt version 5 is required, found: ${QWT_VERSION}" )
endif()

###########################################################################
# Find PyQt & sip
###########################################################################
find_package ( PyQt4 REQUIRED )
find_package ( SIP REQUIRED )
separate_arguments ( PYQT4_SIP_FLAGS )

###########################################################################
# Add QtPropertyBrowser to build
###########################################################################
Expand All @@ -108,12 +115,12 @@ add_dependencies ( check GUITests )

add_subdirectory ( MantidQt )

include_directories ( QtPropertyBrowser/src )
include_directories ( MantidQt/API/inc )
include_directories ( MantidQt/MantidWidgets/inc )
include_directories ( ${CMAKE_CURRENT_BINARY_DIR}/MantidQt/API )
include_directories ( ${CMAKE_CURRENT_BINARY_DIR}/MantidQt/MantidWidgets )
include_directories ( ${CMAKE_CURRENT_BINARY_DIR}/MantidQt/SliceViewer )
#include_directories ( QtPropertyBrowser/src )
#include_directories ( MantidQt/API/inc )
#include_directories ( MantidQt/MantidWidgets/inc )
#include_directories ( ${CMAKE_CURRENT_BINARY_DIR}/MantidQt/API )
#include_directories ( ${CMAKE_CURRENT_BINARY_DIR}/MantidQt/MantidWidgets )
#include_directories ( ${CMAKE_CURRENT_BINARY_DIR}/MantidQt/SliceViewer )

if ( UNIX )
#Experimental feature. Unix only at this point.
Expand Down
11 changes: 8 additions & 3 deletions Code/Mantid/MantidPlot/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -457,9 +457,6 @@ include ( UseSystemQt4 )
###########################################################################

include_directories ( ${PYTHON_INCLUDE_PATH} )
find_package ( PyQt4 REQUIRED )
find_package ( SIP REQUIRED )
separate_arguments ( PYQT4_SIP_FLAGS )

set ( SIP_SPEC ${CMAKE_CURRENT_SOURCE_DIR}/src/qti.sip )
set ( SIP_SRC_IN ${CMAKE_CURRENT_SOURCE_DIR}/src/sipqti.cpp.in )
Expand Down Expand Up @@ -756,9 +753,17 @@ add_definitions ( -DQSCINTILLA_DLL ) # Will only have an effect on Windows (
include_directories ( src )
include_directories ( src/lib/include )
include_directories ( src/lib/3rdparty/qtcolorpicker/src )

include_directories ( ../QtPropertyBrowser/src )
include_directories ( ../MantidQt/API/inc )
include_directories ( ../MantidQt/MantidWidgets/inc )
include_directories ( ../MantidQt/SliceViewer/inc )
include_directories ( ../MantidQt/ImageViewer/inc )
include_directories ( ../MantidQt/Factory/inc )
# ui_ files end up in these places
include_directories ( ${CMAKE_BINARY_DIR}/MantidQt/API )
include_directories ( ${CMAKE_BINARY_DIR}/MantidQt/MantidWidgets )
include_directories ( ${CMAKE_BINARY_DIR}/MantidQt/SliceViewer )


###########################################################################
Expand Down
62 changes: 4 additions & 58 deletions Code/Mantid/MantidQt/API/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -67,20 +67,15 @@ set ( UI_FILES
)

set( TEST_FILES
test/MantidColorMapTest.h
test/MantidQwtMatrixWorkspaceDataTest.h
MantidColorMapTest.h
MantidQwtMatrixWorkspaceDataTest.h
)

include_directories ( inc )
include_directories ( ../MantidWidgets/inc )
include_directories ( ../MantidWidgets )

qt4_wrap_cpp ( MOCCED_FILES ${MOC_FILES} )

set ( ALL_SRC ${SRC_FILES} ${MOCCED_FILES} )

qt4_wrap_ui ( UI_HDRS ${UI_FILES} )
include_directories ( ${CMAKE_CURRENT_BINARY_DIR} )
qt4_wrap_ui ( UI_HDRS ${UI_FILES} )

# For Windows:
add_definitions ( -DIN_MANTIDQT_API )
Expand All @@ -97,56 +92,7 @@ target_link_libraries ( MantidQtAPI ${CORE_MANTIDLIBS} ${QT_LIBRARIES} ${QWT_LIB
# Testing
###########################################################################

if ( CXXTEST_FOUND )
include_directories ( SYSTEM ${CXXTEST_INCLUDE_DIR} ${GMOCK_INCLUDE_DIR} ${GTEST_INCLUDE_DIR} )

include_directories ( ../../Framework/TestHelpers/inc
../../Framework/DataObjects/inc )

# This variable is used within the cxxtest_add_test macro to build these helper classes into the test executable.
# It will go out of scope at the end of this file so doesn't need un-setting
set ( TESTHELPER_SRCS ../../Framework/TestHelpers/src/ComponentCreationHelper.cpp
../../Framework/TestHelpers/src/WorkspaceCreationHelper.cpp )

cxxtest_add_test ( MantidQtAPITest ${TEST_FILES} )
target_link_libraries( MantidQtAPITest MantidQtAPI DataObjects)
add_dependencies( GUITests MantidQtAPITest )

# Add to the 'UnitTests' group in VS
set_property( TARGET MantidQtAPITest PROPERTY FOLDER "UnitTests" )
endif ()

###########################################################################
# DEMO/GUI TESTING APPLICATIONS
###########################################################################

if ( NOT WIN32 )
# Does not work on windows for some reason

include_directories ( ../../Framework/MDEvents/inc )
include_directories ( ../../Framework/DataObjects/inc )
include_directories ( ../../Framework/Algorithms/inc )
include_directories ( ../../Framework/API/inc )
include_directories ( ../../Framework/DataHandling/inc )
include_directories ( ../../Framework/TestHelpers/inc )
include_directories ( ../../Framework/Geometry/inc )

# Extra, optional targets for demoing GUI elements
add_executable ( PropertyWidgetsDemo EXCLUDE_FROM_ALL ${WIN_CONSOLE} MACOSX_BUNDLE ${ALL_SRC} test/main_PropertyWidgetsDemo.cpp
${INC_FILES} ${QTIPLOT_C_SRC} ${UI_HDRS} ${RES_FILES} ${MANTID_RC_FILE} )
target_link_libraries ( PropertyWidgetsDemo
${CORE_MANTIDLIBS} MantidQtAPI MantidWidgets Geometry
QtPropertyBrowser ${QT_LIBRARIES} ${ZLIB_LIBRARIES} ${QWT_LIBRARIES} )

# Extra, optional targets for demoing GUI elements
add_executable ( GenericDialogDemo EXCLUDE_FROM_ALL ${WIN_CONSOLE} MACOSX_BUNDLE ${ALL_SRC} test/GenericDialogDemo.cpp
${INC_FILES} ${QTIPLOT_C_SRC} ${UI_HDRS} ${RES_FILES} ${MANTID_RC_FILE} )
target_link_libraries ( GenericDialogDemo
${CORE_MANTIDLIBS} MantidQtAPI MantidWidgets Geometry
QtPropertyBrowser ${QT_LIBRARIES} ${ZLIB_LIBRARIES} ${QWT_LIBRARIES} )

endif () # (not for windows)

add_subdirectory ( test )

###########################################################################
# Installation settings
Expand Down
18 changes: 18 additions & 0 deletions Code/Mantid/MantidQt/API/test/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
if ( CXXTEST_FOUND )
include_directories ( SYSTEM ${CXXTEST_INCLUDE_DIR} ${GMOCK_INCLUDE_DIR} ${GTEST_INCLUDE_DIR} )

include_directories ( ../../../Framework/TestHelpers/inc
../../../Framework/DataObjects/inc )

# This variable is used within the cxxtest_add_test macro to build these helper classes into the test executable.
# It will go out of scope at the end of this file so doesn't need un-setting
set ( TESTHELPER_SRCS ../../../Framework/TestHelpers/src/ComponentCreationHelper.cpp
../../../Framework/TestHelpers/src/WorkspaceCreationHelper.cpp )

cxxtest_add_test ( MantidQtAPITest ${TEST_FILES} )
target_link_libraries( MantidQtAPITest MantidQtAPI DataObjects)
add_dependencies( GUITests MantidQtAPITest )

# Add to the 'UnitTests' group in VS
set_property( TARGET MantidQtAPITest PROPERTY FOLDER "UnitTests" )
endif ()
121 changes: 14 additions & 107 deletions Code/Mantid/MantidQt/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,24 @@ endif ()

include ( UseSystemQt4 )
include_directories ( SYSTEM ${QWT_INCLUDE_DIR} )

# Any MantidQt package can depend on API, so add the includes to the path here
include_directories ( API/inc )
include_directories ( ${CMAKE_CURRENT_BINARY_DIR}/API )
add_subdirectory ( API )

# Anything EXCEPT API can depend on MantidWidgets
include_directories ( MantidWidgets/inc )
include_directories ( ${CMAKE_CURRENT_BINARY_DIR}/MantidWidgets )
add_subdirectory ( MantidWidgets )

add_subdirectory ( CustomDialogs )
add_subdirectory ( CustomInterfaces )
add_subdirectory ( DesignerPlugins )
add_subdirectory ( SliceViewer )
add_subdirectory ( ImageViewer )
add_subdirectory ( Factory )

add_subdirectory ( Python )
add_subdirectory ( DesignerPlugins )

###########################################################################
# Add a custom target to build all of the MantidQt packages
Expand All @@ -37,119 +45,18 @@ if ( MSVC_IDE )
set_property ( TARGET DesignerPlugins PROPERTY FOLDER "MantidQt" )
set_property ( TARGET MantidQtSliceViewer PROPERTY FOLDER "MantidQt" )
set_property ( TARGET MantidQtImageViewer PROPERTY FOLDER "MantidQt" )
set_property ( TARGET MantidQtFactory PROPERTY FOLDER "MantidQt" )
set_property ( TARGET mantidqtpython PROPERTY FOLDER "MantidQt" )
else ()
add_custom_target ( MantidQt DEPENDS MantidQtAPI MantidWidgets
CustomDialogs CustomInterfaces
MantidQtSliceViewer MantidQtImageViewer
MantidQtSliceViewer MantidQtImageViewer
MantidQtFactory mantidqtpython
)
endif ()





###########################################################################
# Do the sip generation, for python bindings
###########################################################################

include_directories ( ${PYTHON_INCLUDE_PATH} )
find_package ( PyQt4 REQUIRED )
find_package ( SIP REQUIRED )
separate_arguments ( PYQT4_SIP_FLAGS )

if ( ${SIP_VERSION} MATCHES "04[0-9][a-f].*" )
# SIP version is at least 4.10 (040a or higher in hex)
# message ( STATUS "Sip version is ${SIP_VERSION}. Using mantidqt sip with docstring." )
set ( SIP_SPEC ${CMAKE_CURRENT_SOURCE_DIR}/mantidqt.sip )
else ()
# Pre 4.0 sip version (RHEL5 build).
message ( STATUS "Sip version is ${SIP_VERSION}. Using mantidqt sip without docstring." )
set ( SIP_SPEC ${CMAKE_CURRENT_SOURCE_DIR}/mantidqt.rhel5.sip )
endif ()

set ( SIP_SRC_IN ${CMAKE_CURRENT_SOURCE_DIR}/sip_mantidqt.cpp.in )
set ( SIP_SRC ${CMAKE_CURRENT_BINARY_DIR}/sip_mantidqt.cpp )
set ( SIP_SRC_AUTO siplibmantidpythonqtpart0.cpp )

# We need to manually add all the headers that are in the sip file
# so that the dependencies are known to CMake
set ( SIP_HDRS
SliceViewer/inc/MantidQtSliceViewer/SliceViewer.h
)

set( SRC_UNITY_IGNORE_FILES )

###########################################################################
# Sip generated files
###########################################################################

# The code generated by sip causes compiler warnings therefore the
# generated file is wrapped by ${SIP_SRC} and these warnings are
# disabled. In order for VS2010 to to this correctly the second
# custom command below is required

# Flags used:
# -e : C++ exceptions turn into python exceptions.
# -j1 : split into 1 file
# -w : enable warnings
# -o : automatic docstrings (not supported in old version < 4.10)

add_custom_command ( OUTPUT ${SIP_SRC_AUTO}
COMMAND ${SIP_EXECUTABLE}
-I ${PYQT4_SIP_DIR} ${PYQT4_SIP_FLAGS}
-c ${CMAKE_CURRENT_BINARY_DIR} -j1 -w
-e
${SIP_SPEC}
DEPENDS mantidqt.sip ${SIP_HDRS}
COMMENT "Generating mantidqt python bindings using sip"
)

add_custom_command ( OUTPUT ${SIP_SRC}
COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${SIP_SRC_IN} ${SIP_SRC}
DEPENDS ${SIP_SRC_AUTO}
COMMENT "Generating mantidqt sip wrapper"
)

# Needed for sip.h header that can end up in a different place to to the main Python include directory
include_directories ( ${SIP_INCLUDE_DIR} )

# Needed for sip generated files to find includes in src
include_directories ( ${CMAKE_CURRENT_SOURCE_DIR} )

# Other folders that need to be included...
include_directories ( ${CMAKE_CURRENT_SOURCE_DIR}/SliceViewer/inc )
include_directories ( ${CMAKE_CURRENT_SOURCE_DIR}/MantidWidgets/inc )
include_directories ( ${CMAKE_CURRENT_BINARY_DIR}/SliceViewer ) # to find the ui_*.h auto-generated files

include_directories ( ${CMAKE_CURRENT_SOURCE_DIR}/ImageViewer/inc )
include_directories ( ${CMAKE_CURRENT_SOURCE_DIR}/ImageViewer ) #to find ui*.h

# This creates the target library, just for python bindings
add_library ( mantidqtpython MODULE ${SIP_SRC} )

if(WIN32)
# Windows: Python library name needs to end in .pyd for Windows
set_target_properties( mantidqtpython PROPERTIES PREFIX "" SUFFIX ".pyd" )
elseif ( APPLE )
# Mac: and in .so on the Mac, with no "lib" prefix either
set_target_properties ( mantidqtpython PROPERTIES PREFIX "" SUFFIX .so )
else ()
# Linux: needs to NOT have the usual "lib" prefix.
set_target_properties( mantidqtpython PROPERTIES PREFIX "" )
endif ()

# ... and links to other required libs ...
target_link_libraries ( mantidqtpython
MantidQtAPI QtPropertyBrowser MantidQtSliceViewer MantidQtFactory
${QT_LIBRARIES} ${QWT_LIBRARIES}
${PYTHON_LIBRARIES}
)



###########################################################################
# Installation settings
###########################################################################

install ( TARGETS mantidqtpython DESTINATION ${LIB_DIR} )

3 changes: 0 additions & 3 deletions Code/Mantid/MantidQt/CustomDialogs/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,6 @@ set ( UI_FILES inc/MantidQtCustomDialogs/CreateSampleShapeDialog.ui
)

include_directories ( inc )
include_directories ( ../MantidWidgets/inc )
include_directories ( ${CMAKE_CURRENT_BINARY_DIR}/../MantidWidgets )
include_directories ( ${CMAKE_CURRENT_BINARY_DIR}/../API )

qt4_wrap_cpp ( MOCCED_FILES ${MOC_FILES} )

Expand Down
34 changes: 11 additions & 23 deletions Code/Mantid/MantidQt/CustomInterfaces/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -111,20 +111,18 @@ set ( UI_FILES inc/MantidQtCustomInterfaces/ConvertToEnergy.ui
)

set( TEST_FILES
test/EventNexusFileMementoTest.h
test/WorkspaceMementoTest.h
test/WorkspaceInADSTest.h
test/RawFileMementoTest.h
EventNexusFileMementoTest.h
WorkspaceMementoTest.h
WorkspaceInADSTest.h
RawFileMementoTest.h
)

include_directories ( inc )
include_directories ( ../MantidWidgets/inc )
include_directories ( ${CMAKE_CURRENT_BINARY_DIR}/../MantidWidgets )
include_directories ( ${CMAKE_CURRENT_BINARY_DIR}/../API )
include_directories ( ../../QtPropertyBrowser/src )
# the directory with the information about ConvertToMD interface definitions
#include_directories (../../Framework/MDAlgorithms/inc)
# TODO: Remove these illegal dependencies (ticket #5151)
include_directories (../../Framework/MDEvents/inc)
include_directories (../../Framework/DataObjects/inc)

qt4_wrap_cpp ( MOCCED_FILES ${MOC_FILES} )

Expand All @@ -145,25 +143,15 @@ add_library ( CustomInterfaces ${ALL_SRC} ${INC_FILES} ${UI_HDRS} )
# Set the name of the generated library
set_target_properties ( CustomInterfaces PROPERTIES OUTPUT_NAME MantidQtCustomInterfaces )

Find_Package(Threads)
find_Package(Threads)

target_link_libraries ( CustomInterfaces MantidQtAPI MantidWidgets QtPropertyBrowser MDEvents ${CMAKE_THREAD_LIBS_INIT})

if ( CXXTEST_FOUND )
include_directories ( SYSTEM ${CXXTEST_INCLUDE_DIR} ${GMOCK_INCLUDE_DIR} ${GTEST_INCLUDE_DIR} )

include_directories( ../../Framework/TestHelpers/inc ../../Framework/DataObjects/inc ../../Framework/Crystal/inc )

if ( GMOCK_FOUND AND GTEST_FOUND )
cxxtest_add_test ( CustomInterfacesTest ${TEST_FILES} ${GMOCK_TEST_FILES} )
target_link_libraries( CustomInterfacesTest CustomInterfaces DataObjects ${GMOCK_LIBRARIES} ${GTEST_LIBRARIES} )

add_dependencies( GUITests CustomInterfacesTest )
# Add to the 'UnitTests' group in VS
set_property( TARGET CustomInterfacesTest PROPERTY FOLDER "UnitTests" )
endif ()
###########################################################################
# Testing
###########################################################################

endif ()
add_subdirectory ( test )

###########################################################################
# Installation settings
Expand Down
17 changes: 17 additions & 0 deletions Code/Mantid/MantidQt/CustomInterfaces/test/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
if ( CXXTEST_FOUND )
include_directories ( SYSTEM ${CXXTEST_INCLUDE_DIR} ${GMOCK_INCLUDE_DIR} ${GTEST_INCLUDE_DIR} )

include_directories( ../../../Framework/TestHelpers/inc ../../../Framework/DataObjects/inc )

if ( GMOCK_FOUND AND GTEST_FOUND )
cxxtest_add_test ( CustomInterfacesTest ${TEST_FILES} ${GMOCK_TEST_FILES} )
target_link_libraries( CustomInterfacesTest CustomInterfaces DataObjects ${GMOCK_LIBRARIES} ${GTEST_LIBRARIES} )

add_dependencies( GUITests CustomInterfacesTest )
# Add to the 'UnitTests' group in VS
set_property( TARGET CustomInterfacesTest PROPERTY FOLDER "UnitTests" )
endif ()

endif ()


0 comments on commit 65c4ea8

Please sign in to comment.