2016-03-03 6 views
7

मैं CMakeLists.txt में कुछ निष्पादन योग्य नामों का नाम बदलना चाहता हूं लेकिन पुराने नामों से प्रतीकात्मक लिंक भी पिछड़े संगतता के लिए नई फाइलों में चाहता हूं। यह उन प्रणालियों पर कैसे पूरा किया जा सकता है जो प्रतीकात्मक लिंक का समर्थन करते हैं?प्रतीकात्मक लिंक सीएमके

इसके अलावा सिस्टम के विकल्प क्या हैं जो प्रतीकात्मक लिंक का समर्थन नहीं करते हैं?

धन्यवाद

+1

'इसके अलावा क्या विकल्प हैं सिस्टम जो प्रतीकात्मक लिंक का समर्थन नहीं करता है? '- नाम बदलने की बजाय फ़ाइलों की प्रतिलिपि बनाएँ। या पुराने नाम के साथ स्क्रिप्ट/छोटा प्रोग्राम बनाएं, जो केवल नए नाम के साथ प्रोग्राम निष्पादित करता है। – Tsyvarev

उत्तर

9

आप एक कस्टम लक्ष्य बना सकते हैं और सिमलिंक

ADD_CUSTOM_TARGET(link_target ALL 
        COMMAND ${CMAKE_COMMAND} -E create_symlink ${target} ${link}) 

इस बनाने के लिए केवल प्रणाली है कि सिमलिंक समर्थन पर काम करेंगे CMake उपयोग कर सकते हैं, guide देखते हैं।

यूनिक्स पर केवल उपलब्ध:

create_symlink वर्ष नई - एक प्रतीकात्मक कड़ी नया बनाने -> वर्ष

+0

विंडोज़ https://gitlab.kitware.com/cmake/cmake/issues/17461 – Sergei

6

यह करने के लिए एक और तरीका है:

INSTALL(CODE "execute_process(\ 
    COMMAND ${CMAKE_COMMAND} -E create_symlink \ 
    ${target} \ 
    ${link} \ 
    )" 
) 

यह symlinking रास्ता केवल make install के दौरान किया जाएगा।

5

एक अन्य विधि है कि थोड़ा अधिक वर्बोज़ है और केवल पर चलता स्थापित:

macro(install_symlink filepath sympath) 
    install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${filepath} ${sympath})") 
    install(CODE "message(\"-- Created symlink: ${sympath} -> ${filepath}\")") 
endmacro(install_symlink) 

(ln -s के समान) इस तरह यह प्रयोग करें:

install_symlink(filepath sympath) 
+0

पर इस मुद्दे के बारे में जो मैंने देखा है। बहुत धन्यवाद। – warchantua

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