1

我正在尝试编译一个库(xcrysden,基于 Make 文件),它在编译期间执行外部依赖项的 ./configure - Tk 和 Tcl 8.5 - 并编译它们。

所以,结构大致是这样的:

主 Makefile:

...
cd external/src; make;

外部依赖项(预)makefile(Tk):

include ../Make.sys
cd /unix
./configure
make
make install

Make.sys 包含在外部 makefile 中:

...
CFLAGS =...
CC     =...

显然,configure 会生成另一个 makefile/external/src/unix供 Tk 使用。在 Tk 文档中是这样写的:

If you wish to specify a particular compiler, set the CC environment variable before calling configure. You can also specify CFLAGS prior to configure and they will be used during compilation.

但是从生成的 Makefile 中我肯定看到既没有使用定义的编译器(CC)也没有使用标志(CFLAGS)。当它在另一个make文件中设置时,它是否符合“环境变量”的条件?

我实际上在编译 Tk 时遇到问题,所以我不仅尝试传递编译器,还尝试传递链接信息 LDFLAGS = -L/opt/local/lib -lfontconfig。我想以一种简洁的方式进行(即仅修改依赖于 Tk 的库的 Make.sys)。但是后来我面临的问题是,我不仅不知道如何传递LDFLAGS给 Tk 配置,甚至CC/CFLAGS不知道。我不确定这是否特定于使用 ./configure 的特定库 (Tk),或者我误解了 ./configure 的一般用法。

p/s/ 我正在使用 gnu 编译器在 OS-X 上编译。

4

1 回答 1

1

问题是您在其中定义的变量../Make.sys当前对于处理include;的 shell 是本地的。configureand在make子进程中运行,并且不会发现您有任何偏好。正确的做法是添加:

export CFLAGS CC

include和对 的调用之间./configure

你也可以把它放在里面Make.sys,或者调用configureas CFLAGS=$CFLAGS CC=$CC ./configure。您可能不应该直接在make虽然的调用中设置值;设置编译器可能意味着还需要不同的其他标志。

于 2013-04-22T10:35:41.197 回答