# Generate and install examples. # # This is boilerplate code for generating a set of executables, one per # .cpp file in an "examples" subdirectory. # # For IDEs that can deal with PROJECT_LABEL properties (at least # Visual Studio) the projects for building each of these adhoc # executables will be labeled "Example - TheExampleName" if a file # TheExampleName.cpp is found in this directory. # # We check the BUILD_TESTING_{SHARED,STATIC} variables to determine # whether to build dynamically linked, statically linked, or both # versions of the executable. SET(OpenMM_CWRAPPER_LIB "OpenMM_CWrapper") ADD_SUBDIRECTORY(wrappers) SET(BUILD_TESTING_SHARED 1) SET(BUILD_TESTING_STATIC 1) FILE(GLOB EXAMPLES "*.cpp") FOREACH(EX_PROG ${EXAMPLES}) GET_FILENAME_COMPONENT(EX_SRC ${EX_PROG} NAME) GET_FILENAME_COMPONENT(EX_ROOT ${EX_PROG} NAME_WE) IF (BUILD_TESTING_SHARED) # Link with shared library ADD_EXECUTABLE(${EX_ROOT} ${EX_PROG}) SET_TARGET_PROPERTIES(${EX_ROOT} PROPERTIES PROJECT_LABEL "Example - ${EX_ROOT}") TARGET_LINK_LIBRARIES(${EX_ROOT} ${SHARED_TARGET}) ENDIF (BUILD_TESTING_SHARED) IF (BUILD_TESTING_STATIC) # Link with static library SET(EX_STATIC ${EX_ROOT}Static) ADD_EXECUTABLE(${EX_STATIC} ${EX_PROG}) SET_TARGET_PROPERTIES(${EX_STATIC} PROPERTIES COMPILE_FLAGS "-DOPENMM_USE_STATIC_LIBRARIES" PROJECT_LABEL "Example - ${EX_STATIC}") TARGET_LINK_LIBRARIES(${EX_STATIC} ${STATIC_TARGET}) ENDIF (BUILD_TESTING_STATIC) INSTALL(FILES ${EX_SRC} DESTINATION examples) ENDFOREACH(EX_PROG ${ADHOC_TESTS}) FILE(GLOB EXAMPLES "*.c") FOREACH(EX_PROG ${EXAMPLES}) GET_FILENAME_COMPONENT(EX_SRC ${EX_PROG} NAME) GET_FILENAME_COMPONENT(EX_ROOT ${EX_PROG} NAME_WE) IF (BUILD_TESTING_SHARED) # Link with shared library ADD_EXECUTABLE(${EX_ROOT} ${EX_PROG}) SET_TARGET_PROPERTIES(${EX_ROOT} PROPERTIES PROJECT_LABEL "Example C - ${EX_ROOT}") TARGET_LINK_LIBRARIES(${EX_ROOT} ${OpenMM_CWRAPPER_LIB} ${SHARED_TARGET}) ENDIF (BUILD_TESTING_SHARED) IF (BUILD_TESTING_STATIC) # Link with static library SET(EX_STATIC ${EX_ROOT}Static) ADD_EXECUTABLE(${EX_STATIC} ${EX_PROG}) SET_TARGET_PROPERTIES(${EX_STATIC} PROPERTIES COMPILE_FLAGS "-DOPENMM_USE_STATIC_LIBRARIES" PROJECT_LABEL "Example C - ${EX_STATIC}") TARGET_LINK_LIBRARIES(${EX_STATIC} ${OpenMM_CWRAPPER_LIB} ${STATIC_TARGET}) ENDIF (BUILD_TESTING_STATIC) INSTALL(FILES ${EX_SRC} DESTINATION examples) ENDFOREACH(EX_PROG ${ADHOC_TESTS}) INSTALL(FILES README.txt DESTINATION examples)