क्या add_subdirectory के साथ जोड़े गए निर्देशिकाओं में परिभाषित लक्ष्यों के साथ इंस्टॉल (TARGETS ...) का उपयोग करना संभव है?इंस्टॉल करें (TARGETS ...) और add_subdirectory
मेरा उपयोग मामला है, कि मैं gtest के लिए e.gg एक आरपीएम बनाना चाहता हूं। gtest प्रोजेक्ट में किसी भी इंस्टॉल स्टेटमेंट के बिना CMakeLists.txt होता है। मैं gtest के CMakeLists.txt पर उन बयानों को जोड़ने के बिना पैकेज बनाना चाहता हूं।
मैं इस जिसके परिणामस्वरूप निर्देशिका संरचना है:
+ gtest-1.5.0/...
+ CMakeLists.txt
gtest-1.5.0 के CMakeLists इस तरह पुस्तकालयों परिभाषित करता है:
cxx_static_library(gtest "${cxx_strict}" src/gtest-all.cc)
cxx_static_library(gtest_main "${cxx_strict}" src/gtest_main.cc)
target_link_libraries(gtest_main gtest)
अब मैं अपने CMakeLists को कुछ इस तरह जोड़ना चाहते हैं। txt:
add_subdirectory(gtest-1.5.0)
install(TARGETS gtest gtest_main ARCHIVE DESTINATION lib)
लेकिन cmake सही ढंग से कहा गया है:
CMake Error at CMakeLists.txt:10 (install):
install TARGETS given target "gtest" which does not exist in this
directory.
gtest-1.5.0 पैच किए बिना ऐसा करने का कोई तरीका है?
ठीक .. यह काम कर सकता था, लेकिन मुझे समझ नहीं आता, मैं क्यों target_link_libraries में परिभाषित के नाम का इस्तेमाल कर सकते हैं और में आदेश स्थापित नहीं! – Gizmomogwai
इंस्टॉल कमांड केवल लक्ष्य निर्देशिका को देखता है जब कोई लक्ष्य मौजूद है, लक्ष्य_लिंक_ पुस्तकालयों के विपरीत जो सभी लक्ष्यों को स्कैन करता है। – RobertJMaynard
ठीक है ... स्पष्टीकरण के लिए धन्यवाद, मैंने ऐसा कुछ सोचा था, लेकिन मुझे यकीन नहीं था (क्या आप अपना इंस्टॉल संपादित कर सकते हैं (FILES कमांड, क्योंकि इंस्टॉल करें (FILES ARCHIVE पैरामीटर नहीं लेता है)। – Gizmomogwai