我有一个C++项目,使用自动工具在Linux环境下进行编译。所有包括我写入的路径都是相对的(例如:-i./path0/inc-i./path1/path2/inc-i./../path3/inc(。
一切都很好,直到我决定在树构建目录中构建我的项目,因为所有的对象文件都在源文件中。
当然,编译不再像我预期的那样工作了。
所以,我的问题是:
- 我必须在每个include前面添加我自己@srcdir@吗?(例如:AM_CPPFLAGS=-I@srcdir@/path0/inc-I@srcdir@/../path1/inc(
- 或者做这件事的好方法是什么
- 我必须在每个include前面添加自己@srcdir@吗?(例如:AM_CPPFLAGS=-I@srcdir@/路径0/inc-I@srcdir@//路径1/inc(
- 或者做这件事的好方法是什么
要正确支持树外构建,是的,您需要显式地表示相对于源目录的include目录。命令行参数中的任何其他源树路径,但仅通过表示规则先决条件的make
自动变量表示的路径除外。
然而,就我个人而言,我更喜欢使用Automake提供的$srcdir
和/或$top_srcdir
变量,而不是Autoconf中的@srcdir@
替换。