【问题标题】:CMake - using external libraries as APR [duplicate]CMake - 使用外部库作为 APR [重复]
【发布时间】:2020-07-12 05:23:04
【问题描述】:

我对这个 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 的第一个参数应该是可执行文件的名称 (larak)。并且呼叫target_link_libraries 应该在之后 add_executable 呼叫。有关详细信息,请参阅重复的问题及其答案。

标签: build cmake shared-libraries


【解决方案1】:

target_link_libraries() 命令指定要为特定目标链接的库。此目标名称必须作为命令的 first 参数提供,并且必须已在 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
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-09
    • 2014-05-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多