build - CMake - 使用外部库作为 APR
问题描述
我对这个 CMake 很陌生。
我需要使用 Apache 2 中的 APR,但这个构建系统有问题。Apache 2 Web 服务器安装在C:\Apache24文件夹下,与 APR 相关的包含文件位于C:\Apache24\include下,库位于C:\Apache24\lib文件夹下。
cmake_minimum_required(VERSION 3.15)
project(json C)
set(CMAKE_C_STANDARD 90)
include_directories(
C:\Apache24\include
)
link_directories(
C:\Apache24\lib
)
target_link_libraries(
json apr-1.lib
)
add_executable(larak larak.h larak.c main.c)
通过构建我得到这个错误:
Cannot specify link libraries for target "larak" which is not built by this project.
我已经阅读了很多类似的帖子,但大多数都是针对 Linux/Unix 系统的,而不是针对 Windows 的,也不是针对 APR/Apache 的。
解决方案
该target_link_libraries()
命令指定要为特定目标链接的库。此目标名称必须作为命令的第一个参数提供,并且必须已在 CMake 文件的前面定义。由于您在 CMake 文件中只定义了一个目标,因此larak
您可能想要执行以下操作:
cmake_minimum_required(VERSION 3.15)
project(json C)
set(CMAKE_C_STANDARD 90)
include_directories(
C:/Apache24/include
)
link_directories(
C:/Apache24/lib
)
add_executable(larak larak.h larak.c main.c)
target_link_libraries(larak PRIVATE
apr-1.lib
)
小心,CMake 可能会抱怨\
您使用的反斜杠 ( )。您应该将它们转换为正斜杠。
请注意,您可以改为在target_link_libraries()
命令中指定库的完整路径,以避免使用该link_directories()
命令。
cmake_minimum_required(VERSION 3.15)
project(json C)
set(CMAKE_C_STANDARD 90)
include_directories(
C:/Apache24/include
)
add_executable(larak larak.h larak.c main.c)
target_link_libraries(larak PRIVATE
C:/Apache24/lib/apr-1.lib
)
推荐阅读
- android - Viewpager android中使用的分页Arraylist
- mysql - Digital Ocean / Nginx / MySQL / MVC 部署
- python - 在detectron2中,如何在对象检测中仅在没有标签(类名)的图像上绘制边界?
- python - Python for循环csv并发
- python - 如何在 Jupyter 的 URL 中传递密码?
- typescript - Msgraph - 从 msgraph api 下载 .eml 作为 itemAttachment
- ios - 如何在不使用 GoogleMap API 的情况下表达最近的地铁站名称?(iOS,斯威夫特)
- javascript - 如何将文件路径作为命令行参数传递?
- python - attrs 如何欺骗调试器进入自动生成的代码?
- javascript - React Stripe - 将状态映射到条带注入组件上的道具?