From 4caefe5051406901e803d47cad2eba94f3cb4254 Mon Sep 17 00:00:00 2001 From: vahrenkamp <vahrenkamp@042f3d55-54a8-47e9-b7fb-15903f145c44> Date: Tue, 15 May 2012 11:47:17 +0000 Subject: [PATCH] Fixes for external project setup. Adjusted documentation to new build mechanisms. git-svn-id: http://svn.code.sf.net/p/simox/code/trunk@245 042f3d55-54a8-47e9-b7fb-15903f145c44 --- CMakeModules/FindSimox.cmake | 45 ++++++++++++---- .../CMakeModules/FindVirtualRobot.cmake | 39 +++++++++++--- .../VirtualRobotExternalLibrarySetup.cmake | 4 ++ .../examples/GraspEditor/GraspEditor.cpp | 2 +- doc/external_project_setup.txt | 51 +++++-------------- readme.txt | 4 +- 6 files changed, 86 insertions(+), 59 deletions(-) diff --git a/CMakeModules/FindSimox.cmake b/CMakeModules/FindSimox.cmake index 2d4aeb9f1..e99a63aa3 100644 --- a/CMakeModules/FindSimox.cmake +++ b/CMakeModules/FindSimox.cmake @@ -1,16 +1,32 @@ # Find SIMOX # -# SIMOX_FOUND - TRUE on success -# SIMOX_INCLUDE_DIR - The include directory -# SIMOX_LIBRARIES - The libraries +# This find script searches for simox and includes all neccessary config files. # # Search order -# 1. ${Simox_DIR} -# 2. $ENV{Simox_DIR} -# [ The paths should point to either the build or the install directory or Simox ] - -# Here a custom search directory can be manually set. -#SET(Custom_Simox_DIR "C:/Projects/libs/Simox") +## 1. ${Custom_Simox_DIR} +## 2. ${Simox_DIR} +## 3. $ENV{Simox_DIR} +## [ The paths should point to either the build or the install directory or Simox ] +# +# The following variables are set: +## SIMOX_FOUND - TRUE on success +## SIMOX_INCLUDE_DIR - The include directory +## SIMOX_LIBRARIES - The libraries +# +# +# A CMakeLists.txt file for setting up a simox related project could look like this: +# +## PROJECT ( myDemo ) +## SET(Simox_DIR $ENV{Simox_DIR} CACHE STRING "Choose the path to Simox (install or build).") +## SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${Simox_DIR}/share/Simox/cmake) +## FIND_PACKAGE(Simox REQUIRED) +## IF(SIMOX_USE_COIN_VISUALIZATION) +## FILE(GLOB SRCS ${PROJECT_SOURCE_DIR}/myDemo.cpp ${PROJECT_SOURCE_DIR}/myWindow.cpp) +## FILE(GLOB INCS ${PROJECT_SOURCE_DIR}/myWindow.h) +## set(GUI_MOC_HDRS ${PROJECT_SOURCE_DIR}/myWindow.h) +## set(GUI_UIS ${PROJECT_SOURCE_DIR}/myWindow.ui) +## SimoxQtApplication(${PROJECT_NAME} "${SRCS}" "${INCS}" "${GUI_MOC_HDRS}" "${GUI_UIS}") +## ENDIF() #### CMAKE CONFIG @@ -18,17 +34,24 @@ find_file( Simox_CMAKE_CONFIG SimoxConfig.cmake "${Custom_Simox_DIR}/share/Simox/cmake" "${Simox_DIR}/share/Simox/cmake" "$ENV{Simox_DIR}/share/Simox/cmake") -MESSAGE(STATUS "Simox_CMAKE_CONFIG: ${Simox_CMAKE_CONFIG}") + +MESSAGE(STATUS " * Including ${Simox_CMAKE_CONFIG}") include (${Simox_CMAKE_CONFIG}) if( SIMOX_LIBRARIES AND SIMOX_BASE_DIR) set( SIMOX_FOUND TRUE ) set( SIMOX_INCLUDE_DIR ${SIMOX_BASE_DIR} ) set( SIMOX_LIBRARY ${SIMOX_LIBRARIES} ) + + # include all library dependencies + MESSAGE(STATUS " * Including ${SIMOX_CMAKE_DIR}/SimoxExternalLibrarySetup.cmake") + include(${SIMOX_CMAKE_DIR}/SimoxExternalLibrarySetup.cmake) + MESSAGE(STATUS " * Including ${SIMOX_CMAKE_DIR}/SimoxMacros.cmake") + include(${SIMOX_CMAKE_DIR}/SimoxMacros.cmake) + endif() include( FindPackageHandleStandardArgs ) find_package_handle_standard_args( Simox DEFAULT_MSG SIMOX_LIBRARIES SIMOX_INCLUDE_DIR ) mark_as_advanced( SIMOX_INCLUDE_DIR SIMOX_LIBRARIES ) - diff --git a/VirtualRobot/CMakeModules/FindVirtualRobot.cmake b/VirtualRobot/CMakeModules/FindVirtualRobot.cmake index dc031e2a1..5439c5772 100644 --- a/VirtualRobot/CMakeModules/FindVirtualRobot.cmake +++ b/VirtualRobot/CMakeModules/FindVirtualRobot.cmake @@ -1,18 +1,33 @@ # Find VIRTUAL_ROBOT # +# This find script searches for VirtualRobot and includes all neccessary config files. +# # VIRTUAL_ROBOT_FOUND - TRUE on success # VIRTUAL_ROBOT_INCLUDE_DIR - The include directory # VIRTUAL_ROBOT_LIBRARIES - The libraries # # Search order -# 1. ${VirtualRobot_DIR} -# 2. $ENV{VirtualRobot_DIR} -# 3. ${Simox_DIR} -# 4. $ENV{Simox_DIR} -# [ The paths should point to either the build or the install directory of Simox/VirtualRobot ] +## 1. ${Custom_Simox_VR_DIR} +## 2. ${VirtualRobot_DIR} +## 3. $ENV{VirtualRobot_DIR} +## 4. ${Simox_DIR} +## 5. $ENV{Simox_DIR} +## [ The paths should point to either the build or the install directory of Simox/VirtualRobot ] +# +# A CMakeLists.txt file for setting up a VirtualRobot related project could look like this: +# +## PROJECT ( myDemo ) +## SET(VirtualRobot_DIR $ENV{Simox_DIR} CACHE STRING "Choose the path to VirtualRobot (install or build).") +## SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${VirtualRobot_DIR}/share/VirtualRobot/cmake) +## FIND_PACKAGE(VirtualRobot REQUIRED) +## IF(VIRTUAL_ROBOT_USE_COIN_VISUALIZATION) +## FILE(GLOB SRCS ${PROJECT_SOURCE_DIR}/myDemo.cpp ${PROJECT_SOURCE_DIR}/myWindow.cpp) +## FILE(GLOB INCS ${PROJECT_SOURCE_DIR}/myWindow.h) +## set(GUI_MOC_HDRS ${PROJECT_SOURCE_DIR}/myWindow.h) +## set(GUI_UIS ${PROJECT_SOURCE_DIR}/myWindow.ui) +## VirtualRobotQtApplication(${PROJECT_NAME} "${SRCS}" "${INCS}" "${GUI_MOC_HDRS}" "${GUI_UIS}") +## ENDIF() -# Here a custom search directory can be manually set. -#SET(Custom_Simox_VR_DIR "C:/Projects/libs/VirtualRobot_standalone") #### CMAKE CONFIG @@ -22,13 +37,21 @@ find_file( Simox_VR_CMAKE_CONFIG VirtualRobotConfig.cmake "$ENV{VirtualRobot_DIR}/share/VirtualRobot/cmake" "${Simox_DIR}/share/VirtualRobot/cmake" "$ENV{Simox_DIR}/share/VirtualRobot/cmake") -MESSAGE(STATUS " Simox_VR_CMAKE_CONFIG: ${Simox_VR_CMAKE_CONFIG}") +MESSAGE(STATUS " Including ${Simox_VR_CMAKE_CONFIG}") include (${Simox_VR_CMAKE_CONFIG}) if( VIRTUAL_ROBOT_LIBRARIES AND VIRTUAL_ROBOT_DIR) + set( VIRTUAL_ROBOT_FOUND TRUE ) set( VIRTUAL_ROBOT_INCLUDE_DIR ${VIRTUAL_ROBOT_DIR} ) set( VIRTUAL_ROBOT_LIBRARY ${VIRTUAL_ROBOT_LIBRARIES} ) + + # include all library dependencies + MESSAGE (STATUS " * Including ${VIRTUAL_ROBOT_CMAKE_DIR}/VirtualRobotExternalLibrarySetup.cmake") + include(${VIRTUAL_ROBOT_CMAKE_DIR}/VirtualRobotExternalLibrarySetup.cmake) + + MESSAGE (STATUS " * Including ${VIRTUAL_ROBOT_CMAKE_DIR}/VirtualRobotMacros.cmake") + include(${VIRTUAL_ROBOT_CMAKE_DIR}/VirtualRobotMacros.cmake) endif() include( FindPackageHandleStandardArgs ) diff --git a/VirtualRobot/CMakeModules/VirtualRobotExternalLibrarySetup.cmake b/VirtualRobot/CMakeModules/VirtualRobotExternalLibrarySetup.cmake index 423d905c2..783184b1c 100644 --- a/VirtualRobot/CMakeModules/VirtualRobotExternalLibrarySetup.cmake +++ b/VirtualRobot/CMakeModules/VirtualRobotExternalLibrarySetup.cmake @@ -7,6 +7,10 @@ MESSAGE(STATUS " * VIRTUAL_ROBOT_VISUALIZATION: ${VIRTUAL_ROBOT_VISUALIZATION}") IF (VIRTUAL_ROBOT_VISUALIZATION) # we need to check for Qt4 + IF(NOT "$ENV{QT_QMAKE_EXECUTABLE}" STREQUAL "") + MESSAGE (STATUS "USING QT-PATH from environment variable QT_QMAKE_EXECUTABLE: $ENV{QT_QMAKE_EXECUTABLE}") + file(TO_CMAKE_PATH "$ENV{QT_QMAKE_EXECUTABLE}" QT_QMAKE_EXECUTABLE) + ENDIF() FIND_PACKAGE(Qt4 4.6.0 COMPONENTS QtOpenGL QtCore QtGui) ENDIF() diff --git a/VirtualRobot/examples/GraspEditor/GraspEditor.cpp b/VirtualRobot/examples/GraspEditor/GraspEditor.cpp index 7e693edcc..2e1a51175 100644 --- a/VirtualRobot/examples/GraspEditor/GraspEditor.cpp +++ b/VirtualRobot/examples/GraspEditor/GraspEditor.cpp @@ -33,7 +33,7 @@ int main(int argc, char *argv[]) std::string filename1("objects/plate.xml"); std::string filename2("robots/ArmarIII/ArmarIII.xml"); #if 1 - filename1 = "objects/iCub/LegoXWing_RightHand_200.xml"; + filename1 = "objects/iCub/LegoXWing_RightHand_300.xml"; filename2 = "robots/iCub/iCub.xml"; #endif VirtualRobot::RuntimeEnvironment::getDataFileAbsolute(filename1); diff --git a/doc/external_project_setup.txt b/doc/external_project_setup.txt index e9c34b224..83a1fea7a 100644 --- a/doc/external_project_setup.txt +++ b/doc/external_project_setup.txt @@ -8,46 +8,23 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.6.0) CMAKE_POLICY(VERSION 2.6) ############################# SETUP PATHS TO Simox ############################# -GET_FILENAME_COMPONENT (CurrentPath ${CMAKE_CURRENT_LIST_FILE} PATH) -# Either you set your environment variable or you edit the path here manually -SET(SIMOX_DIR_STANDARD "$ENV{Simox_DIR}") +# the environment variable Simox_DIR is initially used as path to simox. +SET(Simox_DIR $ENV{Simox_DIR} CACHE STRING "Choose the path to Simox (install or build).") +SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${Simox_DIR}/share/Simox/cmake) -# be sure to have the absolute path -get_filename_component(SIMOX_DIR_STANDARD ${SIMOX_DIR_STANDARD} ABSOLUTE) +# now search simox (The file ${Simox_DIR}/share/Simox/cmake/FindSimox.cmake is used) +FIND_PACKAGE(Simox REQUIRED) -SET (SIMOX_DIR ${SIMOX_DIR_STANDARD} CACHE STRING "Path to Simox used by ${PROJECT_NAME}") - -# where is the build directory located -SET (SIMOX_BUILD_DIRECTORY ${SIMOX_DIR}/build CACHE STRING "Path to Simox build directory") - -# include simox settings (handles lib search) -INCLUDE(${SIMOX_DIR}/config.cmake) -INCLUDE(${SIMOX_DIR}/CMakeModules/SimoxProject.cmake) - -# Makes the demo directory available in your code -SET(DEMO_BASE_DIR ${PROJECT_SOURCE_DIR}) -ADD_DEFINITIONS(-DDEMO_BASE_DIR="${DEMO_BASE_DIR}") - -IF(SIMOX_VISUALIZATION) - - # Adjust these lines according to your filenames - FILE(GLOB demo_SRCS ${PROJECT_SOURCE_DIR}/demoFile1.cpp ${PROJECT_SOURCE_DIR}/demoFile1.cpp) - FILE(GLOB demo_INCS ${PROJECT_SOURCE_DIR}/demoFile1.h) +# Build only if Simox was created with Coin3D support. +IF(SIMOX_USE_COIN_VISUALIZATION) + FILE(GLOB SRCS ${PROJECT_SOURCE_DIR}/myDemo.cpp ${PROJECT_SOURCE_DIR}/myWindow.cpp) + FILE(GLOB INCS ${PROJECT_SOURCE_DIR}/myWindow.h) + set(GUI_MOC_HDRS ${PROJECT_SOURCE_DIR}/myWindow.h) + set(GUI_UIS ${PROJECT_SOURCE_DIR}/myWindow.ui) - # if you have a Qt-based project, you have to moc the QMainWindow class file - set(GUI_MOC_HDRS - ${PROJECT_SOURCE_DIR}/demoFile1.h - ) - - # When you are using QtDesigner to build the UI, you can specify all .ui files here - set(GUI_UIS - ${PROJECT_SOURCE_DIR}/demoGuiFile.ui - ) - - # pass file lists to simox cmake script: create the executable - simox_add_executable(${PROJECT_NAME} "${demo_SRCS}" "${demo_INCS}" "${GUI_MOC_HDRS}" "${GUI_UIS}") - -ENDIF(SIMOX_VISUALIZATION) + # The simox macro handles qt-mocing, qt-ui building and simox related inlcude, compile and linker flags + SimoxQtApplication(${PROJECT_NAME} "${SRCS}" "${INCS}" "${GUI_MOC_HDRS}" "${GUI_UIS}") +ENDIF() <---- snippet -----> diff --git a/readme.txt b/readme.txt index 228dbbada..67906ba8d 100644 --- a/readme.txt +++ b/readme.txt @@ -38,11 +38,11 @@ GNU GPL 2 (see license.txt) Copyright --------- - 2011 Nikolaus Vahrenkamp + 2012 Nikolaus Vahrenkamp Contact ------- Nikolaus Vahrenkamp vahrenkamp at users dot sf dot net http://wwwiaim.ira.uka.de/users/vahrenka -http://simox.sourceforge.net \ No newline at end of file +http://simox.sourceforge.net -- GitLab