मैं Clion 2016/02/02 उपयोग कर रहा हूँ और मैं libtins पुस्तकालय में एक विधि डिबग करने के लिए चाहते हैं स्रोत फ़ाइलें जोड़कर बाहरी पुस्तकालयों की डीबगिंग सक्षम करें। हालांकि, ऐसा लगता है कि स्रोत उपलब्ध नहीं हैं क्योंकि libtins से विधियों में कूदने का प्रयास करते समय, डीबगर नहीं जाता है और वर्तमान दृश्य को अपडेट करता है।Clion:
मैं include_directories("/home/patrick/libtins/")
या include_directories("/home/patrick/libtins/src/")
जोड़ने जबकि libtins libtins भंडार से क्लोन रूट फ़ोल्डर है द्वारा this post में सुझाव का पालन करने की कोशिश की। लेकिन CLion अभी भी libtins पुस्तकालय से जुड़े स्रोत फ़ाइलों को नहीं मिला।
मेरे CMake फ़ाइल के रूप में पालन दिखता है:
project(myproject)
# Define CMake settings
cmake_minimum_required(VERSION 3.2)
IF(NOT CMAKE_BUILD_TYPE)
SET(CMAKE_BUILD_TYPE "Release")
ENDIF()
IF (CMAKE_BUILD_TYPE MATCHES Debug)
MESSAGE(STATUS "Running Debug configuration.")
ELSEIF (CMAKE_BUILD_TYPE MATCHES Release)
MESSAGE(STATUS "Running Release configuration.")
ENDIF()
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall")
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall")
SET(CMAKE_CXX_STANDARD 11)
SET(CMAKE_CXX_STANDARD_REQUIRED ON)
# Add the library source files
SET(SOURCE_FILES cxx/myclass.cpp cxx/myclass.h)
# Include SQLiteCpp library and build it
option(SQLITECPP_RUN_CPPLINT OFF)
include_directories(SQLiteCpp/include)
add_subdirectory(SQLiteCpp)
# Find libtins library
FIND_LIBRARY(TINS_LIBRARY tins)
IF(TINS_LIBRARY)
MESSAGE(STATUS "Tins library found in ${TINS_LIBRARY}")
ELSE()
MESSAGE(FATAL_ERROR "Tins library not found.")
ENDIF()
FIND_PACKAGE(PythonLibs 3.0 REQUIRED)
IF(PYTHONLIBS_FOUND)
INCLUDE_DIRECTORIES("${PYTHON_INCLUDE_DIRS}")
ELSE()
MESSAGE(FATAL_ERROR "Unable to find Python libraries.")
ENDIF()
# Find and configure BOOST library
FIND_PACKAGE(Boost 1.54 QUIET)
IF (Boost_FOUND)
INCLUDE_DIRECTORIES("${Boost_INCLUDE_DIRS}")
SET(Boost_USE_STATIC_LIBS OFF)
SET(Boost_USE_MULTITHREADED ON)
SET(Boost_USE_STATIC_RUNTIME OFF)
# Find the boost python 3 component
SET(PYTHON_VERSIONS python3 python-py35 python-py34 python-py33 python-py32)
FOREACH(VERSION ${PYTHON_VERSIONS})
FIND_PACKAGE(Boost COMPONENTS ${VERSION} QUIET)
IF(Boost_FOUND)
MESSAGE(STATUS "Python Boost found as '${VERSION}'.")
BREAK()
ENDIF()
ENDFOREACH(VERSION)
IF(NOT Boost_FOUND)
MESSAGE(FATAL_ERROR "Python Boost component not found.")
ENDIF()
ELSE()
MESSAGE(FATAL_ERROR "Unable to find the Boost libraries (version 1.54 or higher).")
ENDIF()
SET_target_properties(sqlite3 PROPERTIES POSITION_INDEPENDENT_CODE ON)
ADD_EXECUTABLE(myproject ${SOURCE_FILES} "/home/pjattke/libtins/")
TARGET_LINK_LIBRARIES(myproject ${Boost_LIBRARIES} "${TINS_LIBRARY}" SQLiteCpp sqlite3 pthread dl)
वास्तव में क्या मैं Clion स्रोत फ़ाइलें डीबगिंग के लिए उपलब्ध बनाने के लिए परिवर्तन करना होगा?
गंभीरता से? बाहरी पुस्तकालयों में डीबगिंग के लिए यूएल अनुमोदित समाधान (जिसमें डीबग-जानकारी स्थापित है) पुस्तकालय को अपनी परियोजना के हिस्से के रूप में बनाना है? मैं शायद ही इतना आसान कहूंगा। मुझे भी CLion के साथ यह समस्या है - मुझे पता चला है कि अगर gdb लाइब्रेरी स्रोत ढूंढ सकता है, तो भी CLion नहीं कर सकता है। –
@ जॉन कॉल्कोट अपनी परियोजना के हिस्से के रूप में लाइब्रेरी का निर्माण सुनिश्चित करता है कि आपके पास प्रोजेक्ट के अन्य हिस्सों (यहां, डीबग) के समान संकलन झंडे हैं। तो, हाँ, CLion इसे पायेगा, और, हाँ, मैं इसे इतना आसान कहूंगा। आप किसी भी मामले में स्थापित होने के लिए डीबग-जानकारी पर भरोसा नहीं कर सकते हैं। – oLen
@JohnCalcote 100% सही है। ज्यादातर मामलों में, यह बाहरी निर्माण को पूरी तरह से फिर से करने का सुझाव देने के लिए पागल है। अधिकांश परियोजनाओं में बेहद जटिल बिल्ड सिस्टम होते हैं, और यह सुझाव देते हुए कि आप इसे अपने स्वयं के निर्माण प्रणाली में आकस्मिक रूप से छोड़ देते हैं, वह यथार्थवादी नहीं है। –