gpt4 book ai didi

c - 我如何 robuSTLy 包含可能位于不同(未知)目录中的外部头文件?

转载 作者:太空宇宙 更新时间:2023-11-04 08:05:17 26 4
gpt4 key购买 nike

我正在尝试编写一个 Makefile,它将在多个平台上编译 C 项目,例如:CentOS、OS X、OpenSUSE。然而,我遇到了一个问题,即外部库的头文件并不总是在同一个地方。我认为这是由于包装,我无法控制。

例如:同时包含 BLAS 文件 lapacke.h我的 CentOS 安装所需的包含语句是 #include<lapacke.h> .在 OpenSUSE 上,路径是 #include<openblas/lapacke.h>

我可以使用 #include<lapacke.h> , 然后用 -I/usr/include/openblas 编译,这在 CentOS 和 OpenSUSE 上都有效,但我不希望这个包含路径在一般情况下有效,因为其他系统可能会将 openblas 放在不同的位置。我如何配置此项目以在大多数平台上编译而不需要用户手动修改 Makefile?

最佳答案

How do I configure this project to compile on most platforms without requiring users to tinker with the Makefile manually?

因为它适用于一般的图书馆,所以这是一个经典且长期存在的问题。它是构建配置系统(例如 Autotools 和 CMake)以及 pkg-config 实用程序的存在理由的一部分。一些软件包提供了自己的实用程序来报告构建细节。

这些都不是万无一失的。如果您不能或不想依赖其中任何一个,那么您的其他选择基本上就是

  • 让用户提供所需的路径(通过编辑文件或通过软件提供的手动脚本),或
  • 为已知系统类型提供一系列预构建配置,并自动检测或要求用户指定系统类型。

我已经看到了以上所有内容,无论是单独的还是各种组合。

关于c - 我如何 robuSTLy 包含可能位于不同(未知)目录中的外部头文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43264244/

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