gpt4 book ai didi

cmake - 在 CMake 中构建依赖项

转载 作者:行者123 更新时间:2023-12-04 06:19:12 24 4
gpt4 key购买 nike

我想在我的应用程序中构建和使用静态链接的 Botan,这意味着首先

python configure.py --disable shared

其次是
make

然后我想为 libbotan.a 创建一个依赖目标作为“libbotan”,我可以在其余的 CMake 文件中使用它。由于 Botan 不使用 CMake,我不确定如何在我的项目中包含依赖项。

我目前的尝试如下所示:

在 deps/Botan.1.11.7/CmakeLists.txt
add_custom_command(OUTPUT botan-configure COMMAND ./configure.py --disable-shared)
add_custom_command(OUTPUT botan-build COMMAND make DEPENDS botan-configure)
add_custom_target(botan DEPENDS botan-configure botan-build)

但是当我像这样在 core/CMakeLists.txt 中添加 botan 作为依赖项时
add_executable(console console.cpp)
target_link_libraries(console messages core botan ${Boost_LIBRARIES})

我明白了
CMake Error at simpleclient/CMakeLists.txt:5 (target_link_libraries):
Target "botan" of type UTILITY may not be linked into another target. One
may link only to STATIC or SHARED libraries, or to executables with the
ENABLE_EXPORTS property set.

我尝试像这样使用 ExternalProject_Add
ExternalProject_Add(botan
GIT_REPOSITORY https://github.com/randombit/botan.git
CONFIGURE_COMMAND python configure.py --disable-shared
BUILD_COMMAND make
INSTALL_COMMAND make install
)

但这给了我同样的错误。

最佳答案

看看ExternalProject模块:

The 'ExternalProject_Add' function creates a custom target to drive download, update/patch, configure, build, install and test steps of an external project



请注意,这只会创建一个实用程序目标。也就是说,您可以运行目标来构建库,并且可以将项目目标的依赖项添加到实用程序目标。但是,您不能直接链接到目标。

您仍然需要手动获取库的路径并包含外部项目的目录。由于有问题的项目本身似乎不使用 CMake,这意味着您需要自己编写对 find_library 的调用。 , find_path 等,并使用这些调用的结果来正确集成依赖项。

由于外部项目是作为正常 CMake 运行的一部分构建的,因此通过在给定的安装路径中搜索 ExternalProject_Add 应该很容易获得正确的值。 .

关于cmake - 在 CMake 中构建依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21630360/

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