# Encode the kernel sources into a C++ class. SET(KERNEL_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src") SET(KERNEL_SOURCE_CLASS CommonKernelSources) SET(KERNELS_CPP ${CMAKE_CURRENT_BINARY_DIR}/src/${KERNEL_SOURCE_CLASS}.cpp) SET(KERNELS_H ${CMAKE_CURRENT_BINARY_DIR}/src/${KERNEL_SOURCE_CLASS}.h) INCLUDE_DIRECTORIES(BEFORE ${CMAKE_CURRENT_BINARY_DIR}/src) FILE(GLOB COMMON_KERNELS ${KERNEL_SOURCE_DIR}/kernels/*.cc) ADD_CUSTOM_COMMAND(OUTPUT ${KERNELS_CPP} ${KERNELS_H} COMMAND ${CMAKE_COMMAND} ARGS -D KERNEL_SOURCE_DIR=${KERNEL_SOURCE_DIR} -D KERNELS_CPP=${KERNELS_CPP} -D KERNELS_H=${KERNELS_H} -D KERNEL_SOURCE_CLASS=${KERNEL_SOURCE_CLASS} -D KERNEL_FILE_EXTENSION=cc -P ${CMAKE_SOURCE_DIR}/cmake_modules/EncodeKernelFiles.cmake DEPENDS ${COMMON_KERNELS} ) SET_SOURCE_FILES_PROPERTIES(${KERNELS_CPP} ${KERNELS_H} PROPERTIES GENERATED TRUE) ADD_CUSTOM_TARGET(CommonKernels DEPENDS ${KERNELS_CPP} ${KERNELS_H}) # Install headers FILE(GLOB CORE_HEADERS include/openmm/common/*.h ${KERNELS_H}) INSTALL_FILES(/include/openmm/common FILES ${CORE_HEADERS})