CMake-使用外部库作为APR



我对这个CMake很陌生。

我需要使用Apache2的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:Apache24include
)
link_directories(
C:Apache24lib
)
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
)

最新更新