如何将 libxml2 与 CMake 一起使用?

2024-03-26

我正在为我的 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 and <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}) 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 libxml2 与 CMake 一起使用? 的相关文章

随机推荐

  • 简单的随机英语句子生成器[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要一个简单的随机英语句子生成器 我需要用我自己的单词填充它 但它需要能够制作至少遵循英语规则的较长句
  • 警告:“将‘D’的乘法及其转置括起来,以确保结果是埃尔米特式的。”

    正如您在上面的屏幕截图中看到的 我的 Matlab m 文件代码中有以下表达式 K P D D P 其中 P 是一个 nxn 矩阵 D 是一个 nx1 列向量 n 4 如果重要的话 为什么我会收到此警告消息 如果我在那里使用或不使用括号会发
  • SCTP 与多宿主作为 TCP 的直接替代品

    SCTP具有本机多宿主支持 如果我理解正确的话 如果主接口出现故障 它将自动通过辅助 NIC 重新路由您的数据包 我通过编写一个自定义路由守护程序来使用 TCP 复制此功能 以便在我的主 NIC 出现故障时修改路由表 我想尝试使用SCTP反
  • 如何隐藏 toast 消息“您的音频将发送到谷歌以提供语音识别服务。”在安卓中?

    我正在使用谷歌语音识别器在 Android 中集成语音服务 但是当按下麦克风按钮时 会显示这条烦人的 toast 消息 请建议我一种隐藏此 toast 消息的方法 这是我的java代码 public class FormActivity e
  • 如何合并对象数组中的重复项并对特定属性求和? [复制]

    这个问题在这里已经有答案了 我有这个对象数组 var arr name John contributions 2 name Mary contributions 4 name John contributions 1 name Mary c
  • PyQt 中同一模型的不同视图

    我有一个关于 PyQt 中特定模型的多个视图的问题 目前 我有一个 TreeView 设置来显示继承自 StandardItemModel 的模型 模型中存在三种类型的 StandardItem Alpha Beta Gamma 它们在 T
  • 单元测试通过 Django 中模型的正则表达式验证器

    我为 models py 中的一些字段定义了模型以及正则表达式验证器 在tests py中 我编写了测试来验证这些验证器 但它们却通过了 尽管当我尝试通过视图输入错误的值时验证器会发出警报 并且我的 forms py 中没有该表单的任何 干
  • 如何查询iPhone当前的IP地址?

    如何查询iPhone当前的IP地址 如果你想要externalIP地址 用于从本地网络外部连接的IP地址 您需要查询外部网络上的服务器 快速搜索后得到以下结果 http checkip dyndns org http checkip dyn
  • Edmx 需要 Primary_Key 吗?

    在 net 中创建 Edmx 时 在创建数据库的 Edmx 时 仅添加具有主键的表和视图 这是一个问题 这个问题很容易解决 但只需在表或视图中创建列主键 但我不知道为什么有必要 谁能解释一下其背后的原因吗 实体框架需要一个主键来正确地将一条
  • 在 node-cron 中获取下一个 cron 作业时间

    在node cron中 如何获取下一个cron作业的时间 例如cronJob next CronJob time 或其他属性 文档中没有任何方法可以证明这一点 我不知道有什么方法可以使用节点 cron https www npmjs com
  • Windows Azure 共享访问签名始终给出:Forbidden 403

    我正在尝试获取单个 blob 的共享访问签名 然后使用 REST api 下载该 blob 但是 我总是收到禁止的 403 错误消息 都在存储模拟器和云上 这是我的代码 CloudStorageAccount storageAccount
  • File.Copy 之后文件正被另一个进程使用

    我正在尝试管理我的网络应用程序中的文件 有时 我必须在文件夹中创建一个文件 使用 File Copy File Copy oldPath newPath 几秒钟后该文件可能会被删除 if File Exists newPath File D
  • GUID 或 GUID 的 SHA1 哈希之间发生冲突的可能性是否更大?

    之间发生碰撞的机会是否更大GUID s 128 位 或 SHA1 哈希值GUID s 160 位 我的观点是 机会较小GUID 即使少了 32 位 因为它有一些特殊的机制来确保它 几乎 因为没有保证 唯一 例如 时间戳 注意 我已经知道GU
  • 点击屋。在集群上创建数据库超时结束

    我有一个由 Clickhouse 的两个节点组成的集群 两个实例都位于 docker 容器中 主机之间的所有通信均已成功检查 ping telnet wget 工作正常 在 Zookeeper 中 我可以在下面看到我触发的查询ddl bru
  • Android Studio 3.2.1,XML 错误缩进格式

    更新到 Android Studio 3 2 1 后 XML 文件格式非常烦人和糟糕 我们该如何修复它 我们可以将其从设置中的某处更改为预览类型吗 在 Android Studio 3 上 转到 首选项 gt 编辑器 gt 代码样式 gt
  • Eclipse 中源的相对路径

    所以 Eclipse 和相对路径 我想要实现的是与多个用户共享项目文件 其中每个用户的源的确切位置可能不同 即 项目 MyProject 的 src 可能位于c version control foo MyProject src or c
  • 操作栏 sherlock 库中显示空指针异常

    我想实现 Sherlock 操作栏的搜索视图小部件 我的问题是OnOptionItemSelected搜索视图项目的 我在库活动中遇到空指针异常 菜单 XML
  • WPF 复选框绑定

    虽然使用复选框的 Click 事件将复选框的选中状态存储在变量中很简单 但我如何通过数据绑定来做到这一点 我发现的所有示例都从某个数据源更新了 UI 或者将一个控件绑定到另一个控件 我想在单击复选框时更新成员变量 TIA 的任何指示 您必须
  • Secure Com SCP02 会话:响应初始化更新命令返回的“密钥多样化数据”的作用是什么

    在初始化更新命令的响应字段中 密钥多样化数据 包含制造商ID和安全域AID的最后两个字节 被返回到Off Card实体 我想知道这些数据的用途是什么 我在某处读到 该密钥多样化数据用于派生卡外的基本密钥 我不知道这是对还是错 如果是正确的
  • 如何将 libxml2 与 CMake 一起使用?

    我正在为我的 C 项目使用 CLion 编辑器 带有 CMake 不过我从未使用过外部库 我的问题是如何将外部库 例如 libxml2 链接到我的项目 我见过一些与此类似的问题 但没有一个对我有用 我的项目是在 Windows 上编译的 我