आप की तरह निम्नलिखित कुछ जोड़कर अपने निर्माण पेड़ add_custom_command
उपयोग करने के लिए फाइल कॉपी कर सकते हैं:
add_custom_command(TARGET MyExe POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${CMAKE_CURRENT_SOURCE_DIR}/src/some_opencl_kernel.cl
$<TARGET_FILE_DIR:MyExe>
)
यह आपकी लक्षित करने के लिए एक के बाद निर्माण घटना कहते हैं जो प्रतियां (मैं इसे MyExe
कहा जाता है) फ़ाइल src/some_opencl_kernel.cl
आपके निर्माण पेड़ में एक ही निर्देशिका में आपके exe के रूप में।
बिल्ड पेड़ में फ़ाइल की प्रतिलिपि बनाने के कई अन्य तरीके हैं, लेकिन मुझे यह पसंद है क्योंकि यह "जनरेटर अभिव्यक्ति" $<TARGET_FILE_DIR:MyExe>
का उपयोग करता है ताकि बिल्ड पेड़ में exe की निर्देशिका के स्थान की पहचान हो सके। यह उदाहरण के आधार पर भिन्न हो सकता है बिल्ड-टाइप या प्लेटफ़ॉर्म, इसलिए जनरेटर अभिव्यक्ति मुझे लगता है कि इस स्थान को निर्दिष्ट करने का सबसे विश्वसनीय, क्रॉस-प्लेटफार्म तरीका है।
इंस्टॉल करने के लिए, आप बस install(FILES ...)
कमांड का उपयोग कर सकते हैं।
install(FILES src/some_opencl_kernel.cl DESTINATION bin)
जो exe के साथ ${CMAKE_INSTALL_PREFIX}/bin/some_opencl_kernel.cl
करने के लिए इसे स्थापित हो जाएगा: अपने exe के लिए मान लिया जाये कि आप की तरह
install(TARGETS MyExe RUNTIME DESTINATION bin)
कुछ तुम सिर्फ जोड़ सकते हैं की है।
फ्रेजर मैं वास्तव में सराहना करते हैं यह, मैं सोच रहा था निकाल दें यदि आपके पास 'कॉन्फ़िगरेशन' के साथ 'config_file' का उपयोग करने पर कोई विचार था? – Constantin
यह भी काम करता है और सबसे आसान विकल्प है यदि आप निर्माण डीआईआर की प्रतिलिपि नहीं बना रहे हैं जहां exes/libs लगाए जा रहे हैं, या यदि वह डीआईआर तय है। उदाहरण के लिए, एमएसवीसी डीबग बिल्ड के लिए ['RUNTIME_OUTPUT_DIRECTORY'] (http://www.cmake.org/cmake/help/v2.8.10/cmake.html#prop_tgt:RUNTIME_OUTPUT_DIRECTORY) में" डीबग "डीआईआर जोड़ता है। यदि आप कभी भी बहु-कॉन्फ़िगरेशन जनरेटर का उपयोग नहीं कर रहे हैं, तो यह शायद आपके लिए कोई समस्या नहीं है, और 'config_file' एक आसान विकल्प होगा। – Fraser