【问题标题】:How can I specify /usr/include/ path in my makefile如何在我的 makefile 中指定 /usr/include/ 路径
【发布时间】:2014-04-08 04:34:37
【问题描述】:

我想在我的 makefile 中指定 -I/usr/include/python2.7 路径。关键是我不想对这部分进行硬编码。我不能真正使用 pkg-config 之类的东西,因为我需要它才能在 Mac 和 Linux 上工作。我也可以让它独立于python版本吗?

【问题讨论】:

  • 你的问题的标题并没有明确你在问什么。也许这就是人们想要关闭它的原因?
  • @reinierpost 那是我投票结束这个问题。当我这样做时,我不清楚如何提出这个问题。现在我已经收集了足够多的关于这个问题的背景信息,这对我来说意义不大。

标签: python makefile


【解决方案1】:

任何想要编写可移植 Makefile 的人都知道这个问题,而 make 并不是为了解决这个问题而设计的。

可以通过编写一个 shell 脚本(通常称为configure)来解决这个问题,该脚本确定系统中所有内容的位置并根据其发现生成一个 Makefile。这样的脚本通常具有一些启发式方法来确定所有内容的位置。一些这样的脚本是交互式的;有些人试图自己弄清楚一切。

设计正确的测试并编写这样的脚本是一项艰巨的工作,因此下一个合乎逻辑的步骤是创建一个系统,让您指定要求(例如“我们需要 python 2.7 或更高版本”)并生成configure 基于此的脚本。

一个非常流行(在“经常使用”的意义上)的工具链是GNU Autotools(另见Wikipedia)。

众所周知的替代方案是CMake(另请参阅Wikipedia)。

【讨论】:

    【解决方案2】:

    此帖子 (http://www.trivedigaurav.com/blog/making-makefiles-for-your-research-code/) 充分回答了所提出的问题。

    @reinerpost 在这里指出,单独使用 make 是不可能做到这一点的。需要某种配置脚本。一种方法是在帖子中如下所示:

    修改 Makefile 并将其命名为 Makefile.in:

    LDFLAGS=@PYTHON_LDFLAGS@ @PYTHON_EXTRA_LIBS@
    CFLAGS=@PYTHON_CPPFLAGS@ -Wall
    

    现在,使用 autotools 创建一个配置脚本,该脚本将填充上述变量。 autoconf 可以使用下面的configure.ac来达到这个目的:

    AC_PYTHON_DEVEL([>= '2.5'])

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-07
      • 1970-01-01
      • 1970-01-01
      • 2011-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多