【问题标题】:OpenCV CMAKE libraries extension for C++ Builder 64 bitC++ Builder 64 位的 OpenCV CMAKE 库扩展
【发布时间】:2021-07-25 10:13:52
【问题描述】:

我正在尝试在 Windows 10 上为 Rad Studio 10.2.3(C++ Builder 64 位)构建 OpenCV 3.2.0 库 我正在按照以下步骤使用 CMake 3.17.0:

https://github.com/IgorYunusov/OpenCV-RS

问题在于生成的库是针对 32 位应用程序 (.lib) 的。而且我需要用于 C++ Builder 64 位应用程序 (.a) 的库。 所以我先把编译器改成BCC64.exe,在CMAKE GUI界面中添加了如下变量:

CMAKE_CXX_OUTPUT_EXTENSION  .o 
CMAKE_LINK_LIBRARY_SUFFIX   .a 
CMAKE_STATIC_LIBRARY_PREFIX  a 
CMAKE_STATIC_LIBRARY_SUFFIX .a 
CMAKE_FIND_LIBRARY_PREFIXES  a 
CMAKE_FIND_LIBRARY_SUFFIXES .a

但是当我在 Rad Studio 命令行上运行 make install 时,生成的库总是 .lib 似乎对于 Windows,CMake 将始终生成 .lib 文件? 那么,如何使用 GUI 配置 CMake,使其生成配置文件以构建 64 位 (.a) 库文件?

【问题讨论】:

  • 好像对于Windows,CMake总是会生成.lib文件?不,这是不正确的。它将使用您告诉它使用的工具链生成。输入 cmake ---help 并查看生成器部分。您不想使用任何 Visual Studio 生成器或 nmake 生成器。
  • 谢谢。但在这种情况下,我没有使用工具链。相反,我将 Borland MakeFiles 与 Clang 本机编译器一起用于 64 位应用程序:BCC64.exe
  • 工具链意味着编译器+链接器。
  • 在我使用的 GUI 中,有一个名为“指定工具链...”的选项,这与像我一样选择编译器的选项完全不同。这就是我要说的。
  • 我明白你的意思了。

标签: c++ opencv cmake


【解决方案1】:

我想我找到了解决办法 我在复制到 CMake 3.17 安装目录的 Windows-Embarcadero.cmake 文件中添加了以下 2 行:

if(CMAKE_BASE_NAME STREQUAL "bcc64")
  set(CMAKE_STATIC_LIBRARY_SUFFIX ".a")
  set(CMAKE_OUTPUT_EXTENSION ".o")
endif()

现在我需要测试生成的 .a 库,看看它们是否真的是 64 位库!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-09
    • 2020-10-17
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多