cmake - मैं सीएमके को स्रोत निर्देशिका में एक स्थिर पुस्तकालय में लिंक करने के लिए कैसे कहूं?




static-libraries (2)

CMake पुस्तकालयों को जोड़ने के लिए पूर्ण मार्ग से गुजरने का पक्षधर है, इसलिए मान लेना libbingitup.a ${CMAKE_SOURCE_DIR} , निम्न कार्य सफल होने चाहिए:

add_executable(main main.cpp)
target_link_libraries(main ${CMAKE_SOURCE_DIR}/libbingitup.a)

मेरे पास मेकफाइल के साथ एक छोटा प्रोजेक्ट है जिसे मैं सीएमके में बदलने की कोशिश कर रहा हूं, ज्यादातर सिर्फ सीएमके के साथ अनुभव प्राप्त करने के लिए। इस उदाहरण के प्रयोजनों के लिए, परियोजना में एक स्रोत फ़ाइल (C ++ शामिल है, हालांकि मुझे नहीं लगता कि भाषा विशेष रूप से प्रासंगिक है) और एक स्थिर पुस्तकालय फ़ाइल है जिसे मैंने कहीं और से कॉपी किया है। तर्क के लिए मान लें कि पुस्तकालय के लिए स्रोत कोड अनुपलब्ध है; मेरे पास केवल .a फ़ाइल और संबंधित हेडर है।

मेरे हस्तनिर्मित मेकफाइल में यह नियम है:

main: main.o libbingitup.a
    g++ -o main main.o libbingitup.a

जो ठीक काम करता है मैं सीएमके को इसे कैसे दोहराऊं? वस्तुतः यह सटीक मेकफाइल नहीं है, निश्चित रूप से, लेकिन ऐसा कुछ जिसमें एक समान लिंकिंग कमांड शामिल है। मैंने स्पष्ट लेकिन भोले तरीकों की कोशिश की है, जैसे

add_executable(main main.cpp libbingitup.a)

या

add_executable(main main.cpp)
target_link_libraries(main libbingitup.a)

साथ ही link_directories(.) या add_library(bingitup STATIC IMPORTED) आदि के साथ विभिन्न चीजें लेकिन अभी तक ऐसा कुछ भी नहीं है जिसके परिणामस्वरूप एक सफल लिंकेज हो। मुझे क्या करना चाहिए?

संस्करण विवरण: लिनक्स पर सीएमके 2.8.7 (जीसीसी 4.6.3 के साथ कुबंटु 12.04)


मुझे यह मददगार लगा ...

http://www.cmake.org/pipermail/cmake/2011-June/045222.html

उनके उदाहरण से:

ADD_LIBRARY(boost_unit_test_framework STATIC IMPORTED)
SET_TARGET_PROPERTIES(boost_unit_test_framework PROPERTIES IMPORTED_LOCATION /usr/lib/libboost_unit_test_framework.a)
TARGET_LINK_LIBRARIES(mytarget A boost_unit_test_framework C)




static-libraries