【发布时间】:2017-06-02 18:14:33
【问题描述】:
首先 - 我知道有很多类似的讨论,但我已经花了几个小时没有他们为我工作。
我的 makefile 首先创建一个以当前日期和时间命名的目录。然后,我将 makefile 附加到头文件的一行,该行创建具有此目录名称的字符串。为此,我首先需要将所有源文件(包括头文件)复制到新创建的子目录中,这样我就可以保留原始头文件,只修改将用于编译的头文件(在子目录中)。然后我想在那个新目录中构建。
我的麻烦是在新子目录中正确构建.o 文件。我找到的解决方案是有
$(NOW)%.o: $(NOW)%.cpp
$(CC) -c $(FLAGS) $<
其中$(NOW)$ 是子目录名称。问题是我的$(FLAGS) 似乎被忽略了:输出大致是
g++ -c -o <.o file> <.cpp file>
(是的,实际上在g++ 和-c 之间引入了额外的空间。)而在顶级目录中构建一个拉
%.o: %.cpp
$(CC) -c $(FLAGS) $<
正确输出
g++ -c <my flags> -o <.o file> <.cpp file>
总而言之,我无法通过将源文件传输到新创建的子目录并在该目录中构建.o 文件来正常编译。 TYIA。
【问题讨论】:
-
发布设置
$(FLAGS)的行。如果它是特定于目标的变量,那么这可能会导致您描述的问题。此外,如果它使用:=设置并且低于$(NOW)%.o目标,那么它的值将不会在该规则中生效。更完整的 makefile 肯定有助于诊断问题。