В рамках проекта, над которым я работаю, мне нужно использовать библиотеку WebKitGTK +.
Я скачал библиотеку (tarball) и скомпилировал ее, как описано Вот.
После компиляции было сделано:
Заголовки библиотеки находятся в /usr/local/include
,
Библиотеки .so
файлы находятся в /usr/local/lib
,
В моем проекте C ++ я попытался добавить следующее CMakeLists.txt
файл:
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})
Однако при компиляции проекта я получаю следующую ошибку:
[ 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, и я действительно мог бы помочь.
Вы пытаетесь использовать WebKitGTK +, который является отдельной библиотекой как от GTK +, так и от libsoup. Вам нужно будет продублировать pkg_check_modules()
Снова код для WebKitGTK +. Сначала вам нужно будет определить, используете ли вы WebKit1 или WebKit2 (у них слегка разные API), а затем найти подходящее имя pkg-config для этой версии WebKitGTK +; проверьте документацию и содержание вашего /usr/lib/pkgconfig
каталог.
Других решений пока нет …