首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >moc:未知选项-isystem

moc:未知选项-isystem
EN

Stack Overflow用户
提问于 2017-04-29 09:48:00
回答 2查看 983关注 0票数 0

我正在尝试安装得分-p。它有标准的构建链。我成功地通过了配置部分。配置后自动生成Makefile。然后我做了make,得到了一个错误。问题是moc抱怨-isystem是一个未知的选项。该选项嵌入到QT_CPPFLAGS中。如果我删除这个选项,那么moc会抱怨指定了太多的输入文件。我该怎么办?

代码语言:javascript
复制
$(editor_plugin_moc_o): ../src/GUI-qt/plugins/SourceCodeEditor/%.moc.cpp: $(SRC_ROOT)src/GUI-qt/plugins/SourceCodeEditor/%.h
    @echo "Create moc file $@"
    @$(MKDIR_P) ../src/GUI-qt/plugins/SourceCodeEditor
    @$(MOC) $(QT_CPPFLAGS) $(CUBE_INCLUDES) $(GUI_INCLUDES) $(CUBE_DEBUG_FLAGS) $(DEFINE_TRACE_BROWSER) $< -o $@
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-29 19:35:50

GCC的-isystem选项有一个论点,所以它将类似于-isystem /some/dir/include。您不能只删除-isystem选项而不删除它的参数。

但是,如果同时删除这两个文件,则很可能会出现编译错误,因为无法找到头文件。

我建议您尝试将-isystem选项转换为普通的-I选项,moc会理解的:

代码语言:javascript
复制
@$(MOC) $(patsubst -isystem,-I,$(QT_CPPFLAGS)) $(CUBE_INCLUDES) $(GUI_INCLUDES) $(CUBE_DEBUG_FLAGS) $(DEFINE_TRACE_BROWSER) $< -o $@
票数 1
EN

Stack Overflow用户

发布于 2017-04-29 10:06:56

您的依赖关系结构有点偏离:

你想要这样的东西:

代码语言:javascript
复制
%.o : %.moc.cpp %.cpp
    @echo "Normal compilation of object file goes here"

%.moc.cpp: %.cpp
    moc $(INCLUDES) $(DEFINES) -i $< -o $@

请注意,moc.cpp文件和源cpp文件链指向同一个对象文件(因为moc.cpp实际上是您的主cpp文件的附加源代码,您可以让moc为您生成该源代码)。还请注意,您需要有一个规则来实际生成moc.cpp文件,在其中传递moc正确的定义和包含。最后:您不传递moc (比如-isystem或其他编译器特定的标志),只传递定义&包含。

请参阅文档,其中包含完整的关于Makefiles和Makefiles的完整部分:http://doc.qt.io/qt-5/moc.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43694133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档