के बाहर लाइब्रेरी से स्थिर रूप से लिंक करने के लिए सीएमके का उपयोग करना, मैं अपनी परियोजना को अपनी साझा लाइब्रेरी से जोड़ने के लिए सीएमके का उपयोग करना चाहता हूं। लाइब्रेरी केवल कुछ हद तक परियोजनाओं के बीच साझा की जाती है और यह छोटी है, इसलिए मैं इसे जोड़ने से पहले इसे बनाना चाहूंगा। इसे हर समय बनाना एक अद्यतित प्रीकंपिल्ड संस्करण को बनाए रखने के बजाय एक बेहतर विचार प्रतीत होता है, क्योंकि मैं इसे परियोजना के साथ एक साथ बदलने के लिए दस हूं। यह अलग है, क्योंकि इसमें सामान शामिल है, मुझे लगभग अगले प्रोजेक्ट में निश्चित रूप से आवश्यकता होगी।प्रोजेक्ट
मैं इसे करने के लिए सीएमके को कैसे कॉन्फ़िगर कर सकता हूं?
प्रासंगिक परियोजना के लिए मेरे वर्तमान CMakeLists.txt इस तरह दिखता है:
find_package(Boost REQUIRED COMPONENTS unit_test_framework)
include_directories(${BaumWelch_SOURCE_DIR}/../../grzesLib/src
${BaumWelch_SOURCE_DIR}/src
${Boost_INCLUDE_DIRS})
if(CMAKE_COMPILER_IS_GNUCXX)
add_definitions(-g -std=c++11 -Wall -Werror -Wextra -pedantic -Wuninitialized)
endif()
# Create the unit tests executable
add_executable(
baumwelchtests stateindextest.cpp baumiterationtest.cpp baumwelchtest.cpp sampleparameters.cpp sdetest.cpp
# Key includes for setting up Boost.Test
testrunner.cpp
# Just for handy reference
exampletests.cpp
)
# Link the libraries
target_link_libraries(baumwelchtests ${Boost_LIBRARIES} baumwelchlib grzeslib)
लेकिन स्पष्ट रूप से संकलन के साथ विफल:
/usr/bin/ld: cannot find -lgrzeslib
यदि आप libname में .a जोड़ते हैं तो यह काम करता है? – drescherjm
@drescherjm, इस लाइब्रेरी को संभावित रूप से उस बिंदु पर भी संकलित नहीं किया गया है, इसके अलावा मैं कहीं भी निर्दिष्ट नहीं करता जहां बाइनरी होगी, इसलिए मुझे यकीन है कि libname में .a जोड़ने से मदद नहीं मिलेगी। – Grzenio