gpt4 book ai didi

cmake - 如何在 CMake 中使用 libxml2?

转载 作者:行者123 更新时间:2023-12-04 00:12:10 27 4
gpt4 key购买 nike

我正在为我的 C 项目使用 CLion 编辑器(带有 CMake),
我从来没有使用过外部库,
我的问题是如何将外部库(例如 libxml2)链接到我的项目?
我见过一些与此类似的问题,但没有一个对我有用。
我的项目是在 Windows 上编译的,我有 libxml .dll、include 和 .lib 文件(Windows 的二进制文件)。

编辑:我的 CMakeLists.txt 文件后的答案建议:

cmake_minimum_required(VERSION 3.2)
project(time_table)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

set(SOURCE_FILES
course.c
course.h
day.h
defines.h
find_tables.c
find_tables.h
item.h
parse_info.c
parse_info.h
table.c
table.h
time_table.c grades.c grades.h)

link_libraries(C:/Users/Gal/Desktop/time_table/libxml2-2.7.8.win32/lib)
add_executable(time_table ${SOURCE_FILES})
target_link_libraries(time_table libxml2)

这就是我得到的:
"C:\Program Files (x86)\JetBrains\CLion 1.1.1\bin\cmake\bin\cmake.exe" --build C:\Users\Gal\.clion11\system\cmake\generated\2eda76ff\2eda76ff\Debug --target time_table -- -j 8
[ 14%] Linking C executable time_table.exe
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: cannot find -llibxml2
collect2.exe: error: ld returned 1 exit status
mingw32-make.exe[3]: *** [time_table.exe] Error 1
CMakeFiles\time_table.dir\build.make:225: recipe for target 'time_table.exe' failed
CMakeFiles\Makefile2:66: recipe for target 'CMakeFiles/time_table.dir/all' failed
mingw32-make.exe[2]: *** [CMakeFiles/time_table.dir/all] Error 2
CMakeFiles\Makefile2:78: recipe for target 'CMakeFiles/time_table.dir/rule' failed
mingw32-make.exe[1]: *** [CMakeFiles/time_table.dir/rule] Error 2

怎么了?

最佳答案

您的机器上安装的库有一项关键工作。 <lib_name>_INCLUDE_DIR<lib_name>_LIBRARIES 完成 find_package 后。这对我有用。

find_package(LibXml2 REQUIRED)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/<my_stuff> ${LIBXML2_INCLUDE_DIR})
add_executable(<my_exe> <my_source_files>)
target_link_libraries(<my_exe> ${LIBXML2_LIBRARIES})

---- 只是为了你的好奇心----

如果您曾经需要构建 (1) 一个(静态)计算库,可能是可重用的,以及 (2) 一个使用该库和 LIBXML2 的可执行文件,请执行此操作。
find_package(LibXml2 REQUIRED)

# add a calculation library: file "lib<mycalc>.a"
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/<your header files folder> ${LIBXML2_INCLUDE_DIR})
add_library(<mycalc> STATIC ${CMAKE_CURRENT_SOURCE_DIR}/<your src files folder>)
target_link_libraries(<mycalc> ${LIBXML2_LIBRARIES})

# add the executable: file <my_exe>
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/<your header files folder> ${LIBXML2_INCLUDE_DIR})
add_executable(<my_exe> <your exe src files>)
target_link_libraries(<my_exe> <mycalc> ${LIBXML2_LIBRARIES})

关于cmake - 如何在 CMake 中使用 libxml2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33047602/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com