2011-06-02 16 views
13

मैं cmake पर नया हूं और मैं निर्देशिका संरचना को संरक्षित करते समय .hpp फ़ाइलों को स्थापित करने का प्रयास कर रहा हूं।सेमेक ग्लोब में निर्देशिका संरचना को संरक्षित करते समय

अब तक मैं

FILE(GLOB files "${CMAKE_CURRENT_SOURCE_DIR}/include/*.hpp" 
    "${CMAKE_CURRENT_SOURCE_DIR}/include/MyLib/*.hpp" 
    "${CMAKE_CURRENT_SOURCE_DIR}/include/MyLib/detail/*.hpp" 

install (FILES ${files} DESTINATION include) 

सभी फाइलें पाया हो लेकिन निर्देशिका पदानुक्रम चपटा है।

FWIW bjam आदेश मैं अनुकरण करने के लिए कोशिश कर रहा हूँ

install headers 
    : ../include/EnsembleLearning.hpp 
     [ glob ../include/MyLib/*.hpp ] 
     [ glob ../include/MyLib/detail/*.hpp ] 
    : <install-source-root>../include ; 

उत्तर

14

आप CMake install आदेश की निर्देशिका संस्करण का उपयोग कर सकते है। निर्देशिका में कॉपी करने के सबडायरेक्टरियों स्थापित नहीं किया जाना चाहिए मौजूद होता है तो

install(DIRECTORY include/ DESTINATION include 
      FILES_MATCHING PATTERN "*.hpp") 

, आप स्पष्ट रूप से बाहर करने के लिए एक पैटर्न के साथ उन लोगों को बाहर विकल्प होगा: यह आदेश की नकल की निर्देशिका की संरचना को सुरक्षित करेगा

install(DIRECTORY include/ DESTINATION include 
      FILES_MATCHING PATTERN "*.hpp" 
      PATTERN "include/MyOtherLib" EXCLUDE) 
+0

+1 बढ़िया, यह वही है जो मैं ढूंढ रहा था, धन्यवाद! – Tom

+0

यह मेरे लिए वर्तमान cmake-2.8.5 के साथ काम नहीं करता है। या तो कोई भी फाइल स्थापित नहीं है या अगर मैं FILES_MATCHING लाइन को छोड़ देता हूं तो सब कुछ इंस्टॉल हो जाता है। कोई विचार? – MKroehnert

+0

मेरे लिए cmake-2.8.5 के साथ काम करता है। क्या आप कुछ कोड पोस्ट कर सकते हैं? – sakra

संबंधित मुद्दे