我想在makefile中指定 -I / usr / include / python2.7 路径。关键是我不想对这部分进行硬编码。我不能真正使用类似pkg-config的东西,因为我需要在Mac和Linux上都能使用它。我也可以让python版本独立吗?
答案 0 :(得分:0)
任何想要编写便携式Makefile的人都知道这个问题,并且make
没有设计来处理它。
可以通过编写一个shell脚本(通常称为configure
)来解决这个问题,该脚本可以确定系统中的所有内容,并根据其结果生成Makefile。这样的脚本通常有一些启发式方法来确定一切都在哪里。一些这样的脚本是互动的;有些人试图自己弄清楚一切。
设计正确的测试并编写这样的脚本是一项工作,所以下一个合乎逻辑的步骤是创建一个允许您指定需求的系统(例如"我们需要python 2.7或更高")并根据该脚本生成configure
脚本。
非常受欢迎(通常使用'经常使用的')工具链是GNU Autotools(另见Wikipedia)。
答案 1 :(得分:0)
这里的帖子(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'])