cmake_minimum_required(VERSION 2.4.6) if(COMMAND cmake_policy) cmake_policy(SET CMP0003 NEW) cmake_policy(SET CMP0005 NEW) endif(COMMAND cmake_policy) PROJECT (Simmodel) SUBDIRS (tests) # # Make sure "sandbox" input & output directories are set. During # SimTK Core build, the build system will set them. Otherwise, we'll # set them to sensible local values. # If SimTK_INSTALL_PREFIX is set then # it is a sandbox installation area, otherwise we want to install # in /usr/local/SimTK or c:\program files\SimTK. Similarly, SimTK_SDK # tells us where to find other SimTK Core modules on which this one # depends. If it is not set, we'll look in /usr/local/SimTK or # c:\program files\SimTK *regardless* of SimTK_INSTALL_PREFIX. # IF(${CMAKE_C_COMPILER} MATCHES "gcc") IF(NOT SimTK_INSTALL_PREFIX) SET(SimTK_INSTALL_PREFIX "/usr/local/SimTK") ENDIF(NOT SimTK_INSTALL_PREFIX) IF(NOT SimTK_SDK) SET(SimTK_SDK "/usr/local/SimTK") ENDIF(NOT SimTK_SDK) ELSE(${CMAKE_C_COMPILER} MATCHES "gcc") IF(NOT SimTK_INSTALL_PREFIX) SET(SimTK_INSTALL_PREFIX "C:/Program Files/SimTK") ENDIF(NOT SimTK_INSTALL_PREFIX) IF(NOT SimTK_SDK) SET(SimTK_SDK "C:/Program Files/SimTK") ENDIF(NOT SimTK_SDK) ENDIF(${CMAKE_C_COMPILER} MATCHES "gcc") INCLUDE_DIRECTORIES(${SimTK_SDK}/include) # The build system will set ARCH64 for 64 bit builds, which require # use of the lib64/ library directories rather than lib/. SET( ARCH64 OFF CACHE BOOL "ON for 64bit builds, OFF for 32bit builds") MARK_AS_ADVANCED( ARCH64 ) IF (ARCH64) SET(LIB64 64) ELSE (ARCH64) SET(LIB64) # nothing ENDIF (ARCH64) IF(UNIX AND NOT CMAKE_BUILD_TYPE) SET(CMAKE_BUILD_TYPE Debug CACHE STRING "Debug or Release build" FORCE) ENDIF (UNIX AND NOT CMAKE_BUILD_TYPE) IF (NOT CMAKE_CXX_FLAGS_DEBUG) SET(CMAKE_CXX_FLAGS_DEBUG "-g" CACHE STRING "To use when CMAKE_BUILD_TYPE=Debug" FORCE) ENDIF (NOT CMAKE_CXX_FLAGS_DEBUG) IF (NOT CMAKE_CXX_FLAGS_RELEASE) SET(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "To use when CMAKE_BUILD_TYPE=Release" FORCE) ENDIF (NOT CMAKE_CXX_FLAGS_RELEASE) ## If no one says otherwise, change the executable path to drop into the same binary ## location as the DLLs so that the test cases will use the just-built DLLs. IF(NOT EXECUTABLE_OUTPUT_PATH) SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR} CACHE INTERNAL "Single output directory for building all executables.") ENDIF(NOT EXECUTABLE_OUTPUT_PATH) IF(NOT LIBRARY_OUTPUT_PATH) SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR} CACHE INTERNAL "Single output directory for building all libraries.") ENDIF(NOT LIBRARY_OUTPUT_PATH) SET(${PROJECT_NAME}_EXECUTABLE_DIR ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}) SET(${PROJECT_NAME}_LIBRARY_DIR ${LIBRARY_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}) # Determine which math libraries to use for this platform. IF(${CMAKE_C_COMPILER} MATCHES "gcc") SET(MATH_LIBS_TO_USE SimTKlapack pthread) ELSE(${CMAKE_C_COMPILER} MATCHES "gcc") ## Assume Microsoft Visual Studio SET(MATH_LIBS_TO_USE SimTKlapack) ENDIF(${CMAKE_C_COMPILER} MATCHES "gcc") ## Pick up any top-level stuff FILE(GLOB SOURCE_FILES src/*.cpp ) FILE(GLOB INCLUDE_FILES include/simmodel/*.h include/simmodel/internal/*.h src/*.h) INCLUDE_DIRECTORIES(BEFORE ${PROJECT_SOURCE_DIR}/include) ADD_LIBRARY(simmodel ${SOURCE_FILES} ${INCLUDE_FILES}) # # Installation # # CMake installs go into CMAKE_INSTALL_PREFIX, which is always # set to something incorrect by CMake. We'll use SimTK_INSTALL_PREFIX # instead which is passed in by the build system or set above. SET(CMAKE_INSTALL_PREFIX ${SimTK_INSTALL_PREFIX} CACHE STRING "Install path prefix." FORCE) LINK_DIRECTORIES(${SimTK_SDK}/lib${LIB64}) # # Testing # IF (UNIX AND NOT CYGWIN AND NOT APPLE) ADD_DEFINITIONS(-fprofile-arcs -ftest-coverage) LINK_LIBRARIES(gcov) ENDIF (UNIX AND NOT CYGWIN AND NOT APPLE) INCLUDE (Dart) ENABLE_TESTING() IF (EXECUTABLE_OUTPUT_PATH) SET (TEST_PATH ${EXECUTABLE_OUTPUT_PATH}) ELSE (EXECUTABLE_OUTPUT_PATH) SET (TEST_PATH .) ENDIF (EXECUTABLE_OUTPUT_PATH) ADD_TEST(MultibodyModelingTest ${TEST_PATH}/tests/MultibodyModelingTest/MultibodyModelingTest) ADD_TEST(Example1 ${TEST_PATH}/tests/Example1/Example1) ADD_TEST(Pendulum1 ${TEST_PATH}/tests/Pendulum1/Pendulum1)