【问题标题】:Create moc files for Qt为 Qt 创建 moc 文件
【发布时间】:2014-02-26 15:05:20
【问题描述】:

我正在寻求一些帮助来编写我的 Makefile。 我需要为Qt生成moc文件,由于某种原因我不能使用qmake(请不要问为什么!!)。

我有这个代码:

moc_%.cpp: %.h
     moc $(DEFINES) $(INCPATH) $< -o $@

但它不起作用。我不明白为什么,但它需要路径...... 所以我写了这样的东西:

$1moc_$2.cpp: $1$2.h
     moc $(DEFINES) $(INCPATH) $< -o $@

但它不起作用......

所以我的问题是:我该怎么做?

【问题讨论】:

  • 你能解释一下谁失败了,当你第一次尝试时?
  • 你不必编写你的makefile。你只需要生成它。另一方面,您应该编写您的.pro 文件。您使用的是什么操作系统?
  • @andrea.marangoni 他不能使用 qmake
  • @BЈовић uhhh sorry.completely jumping that detail =)
  • 感谢您的快速响应!错误是“没有规则来构建“所有”所需的目标 PATH/moc_FILE.cpp。停止”(一些链接,这是我的翻译......)

标签: c++ qt makefile


【解决方案1】:

你可以这样做:

HEADERS=$(wildcard *.hpp)

OBJS+=$(patsubst %.hpp, %.moc.o, $(notdir $(HEADERS)))

%.moc.o : %.hpp
        moc $< | $(CXX) -c $(CXXFLAGS) $(INCLUDES) -xc++ -o $@ -

这将获取所有头文件(所有具有 .hpp 扩展名的文件),创建 moc 文件并立即编译它们。

【讨论】:

  • 我不太明白……对不起。 HEADERS 获取所有没有路径的 cpp 文件,对吗? OBJS ...我不明白,我看不出你在声明后在哪里使用它。什么是 OBJS_DIR ? Tks 寻求帮助
  • @user3356365 我删除了OBJS_DIR 以使其更简单。这将收集当前目录中的所有 hpp 文件。然后将使用moc 解析每个 .hpp 文件,并将输出编译成适当的二进制文件 (.moc.o)。最后,您需要链接这些文件以及已编译的源 (.cpp) 文件。
  • 对不起,我有点忙...我不明白 2 点: 第一:OBJS 已声明但未使用? - 第二:生成的moc文件必须像moc_%.cpp一样吗?您声明了 %.moc.o,这是一个错误吗? tks
  • @user3356365 moc $&lt; 创建源文件,并打印到标准输出。 $(CXX) -c $(CXXFLAGS) $(INCLUDES) -xc++ -o $@ - 从标准输出编译代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多