首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法将本地编译的库添加到CMake项目

无法将本地编译的库添加到CMake项目
EN

Stack Overflow用户
提问于 2017-05-31 15:30:44
回答 1查看 395关注 0票数 0

作为我正在进行的项目的一部分,我需要使用WebKitGTK+库。我下载了这个库(tarball)并按描述的这里编译了它。

编译完成后的

库的头位于/usr/local/include中。

库的.so文件位于/usr/local/lib中。

在我的CMakeLists.txt项目中,试图添加以下文件:

代码语言:javascript
复制
cmake_minimum_required(VERSION 3.7)
project(CVE_2016_4657)

set(CMAKE_CXX_STANDARD 11)
set(SOURCE_FILES main.cpp)
add_executable(CVE_2016_4657 ${SOURCE_FILES})

find_package(PkgConfig REQUIRED)

include_directories(/usr/local/include/webkitgtk-4.0)
link_directories(/usr/local/lib/webkit2gtk-4.0)

pkg_check_modules(GTK3 REQUIRED gtk+-3.0)
include_directories(${GTK3_INCLUDE_DIRS})
link_directories(${GTK3_LIBRARY_DIRS})
add_definitions(${GTK3_CFLAGS_OTHER})

pkg_check_modules(SOUP REQUIRED libsoup-2.4)
include_directories(${SOUP_INCLUDE_DIRS})
link_directories(${SOUP_LIBRARY_DIRS})
add_definitions(${SOUP_CFLAGS_OTHER})

target_link_libraries(
        CVE_2016_4657
        ${GTK3_LIBRARIES}
        ${SOUP_LIBRARIES})

但是,在编译项目时,会出现以下错误:

代码语言:javascript
复制
[ 50%] Linking CXX executable CVE_2016_4657
CMakeFiles/CVE_2016_4657.dir/main.cpp.o: In function `main':
/home/idanas/CLionProjects/Switcheroo/main.cpp:17: undefined reference to 
`webkit_web_view_get_type'
/home/idanas/CLionProjects/Switcheroo/main.cpp:17: undefined reference to 
`webkit_web_view_new'
/home/idanas/CLionProjects/Switcheroo/main.cpp:29: undefined reference to 
`webkit_web_view_load_uri'
collect2: error: ld returned 1 exit status
CMakeFiles/CVE_2016_4657.dir/build.make:94: recipe for target 
'CVE_2016_4657' failed
make[3]: *** [CVE_2016_4657] Error 1
CMakeFiles/Makefile2:67: recipe for target 
'CMakeFiles/CVE_2016_4657.dir/all' failed
make[2]: *** [CMakeFiles/CVE_2016_4657.dir/all] Error 2
CMakeFiles/Makefile2:79: recipe for target 
'CMakeFiles/CVE_2016_4657.dir/rule' failed
make[1]: *** [CMakeFiles/CVE_2016_4657.dir/rule] Error 2
Makefile:118: recipe for target 'CVE_2016_4657' failed
make: *** [CVE_2016_4657] Error 2

我对CMake几乎没有经验,真的需要一些帮助。

EN

回答 1

Stack Overflow用户

发布于 2017-05-31 17:53:34

您正在尝试使用WebKitGTK+,它是一个独立于GTK+和libsoup的库。您需要再次为pkg_check_modules()复制WebKitGTK+代码。您需要首先确定是否使用WebKit1或WebKit2 (它们具有不同的API),然后为该版本的WebKitGTK+找到合适的pkg-config名称;检查文档和/usr/lib/pkgconfig目录的内容。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44288902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档