我使用的是CLion 2016.2.2,我想調試libtins庫中的方法。但是,看起來源代碼不可用,因爲當試圖從libtins跳入方法時,調試器不會進入並僅更新當前視圖。CLion:通過添加源文件啓用外部庫的調試
我試着按照this post中的建議添加include_directories("/home/patrick/libtins/")
或include_directories("/home/patrick/libtins/src/")
,而libtins是從libtins存儲庫克隆的根文件夾。但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)
究竟我必須改變,以使可用於調試的克利翁的源文件?
認真嗎?用於調試到外部庫(已安裝調試信息)的UL認證解決方案是將庫作爲項目的一部分構建?我幾乎沒有那麼容易。我也對CLion有這個問題 - 我發現即使gdb可以找到庫資源,CLion仍然不能。 –
@JohnCalcote將庫構建爲項目的一部分,確保您具有與項目其他部分相同的編譯標誌(這裏是debug)。所以,是的,CLion會找到它的,對,我會這麼簡單。在任何情況下,都不能依賴調試信息進行安裝。 – oLen
@JohnCalcote是100%正確的。在大多數情況下,建議完全重做外部構建是瘋狂的。大多數項目都有非常複雜的構建系統,並建議您隨便將它放入自己的構建系統中,這不是現實。 –