将所有头文件移动到 /usr/local/include/<target>/

Move all header files to /usr/local/include/<target>/

我有一个小问题。我创建了一个可以使用以下命令安装的程序:

./configure && make && sudo make install

这很好用,但所有 .hpp 文件都在 /usr/local/include 中。是否可以将此 .hpp 文件移动到 /usr/local/include/<target>? 因此,如果我有一个名为 my_program 的程序,假设头文件名为 Timer.hpp,是否可以将此 Timer.hpp 移动到 /usr/local/include/my_program 中?

我想通过 automake 和 autoconf 来完成。如果您查看 /usr/include,您会注意到还有一些用于其他程序的目录。我想要那个,但当然是在 /usr/local/include 中。

我也知道 ./configure --prefix=/path/my_program 然后,/path/my_program 中都有,但我不想那样。我想要在 /usr/local/include 中包含我的程序名称的目录,并且在该目录中我想要我的程序的所有 hpp 文件。

如何操作?

如果您使用的是 Automake,那么现在您可能有这样一行:

include_HEADERS = ...

解决此问题的最简单方法是使用预定义的 pkgincludedir:

pkginclude_HEADERS = ...

这将使用您的包的名称作为子目录的名称。

或者,您可以引入自己的目录变量,例如:

myincludedir = $(includedir)/whatever
myinclude_HEADERS = ...

不清楚您是在请求包级别的解决方案,如 Tom Tromey 提供的那样,还是希望在配置期间应用解决方案。如果是后者:

configure --includedir=/usr/local/include/my_program

将设置构建以将包含文件放入指定路径。您可以通过传递给配置的选项来控制大多数文件的最终目的地(事实上,如果不是 s/most/all/,可能有人会争辩说包已损坏)。