2012-07-09 153 views
2

我有一個正在運行的項目在qt中。爲了構建目的,我使用waf構建工具。要獲得相同的項目,並將其從WAF運行,我需要一些文件的末尾添加使qt忽略特定的頭文件包括

#include "file.moc" 

,以避免發生不可預料的參考。但如果這些包括沒有在qt中評論我得不到文件錯誤。你如何讓qt忽略某些文件包含。我覺得這樣的事情應該做的伎倆

#ifndef Q_MOC_RUN 
    #include "file.moc" 
#endif 
+0

你應該有點更具體。如果您必須手動包含'moc'文件,則有可能您已經在做錯了什麼。 – pmr 2012-07-09 08:51:36

+0

問題是。要使代碼在QT中運行,我必須評論這些moc文件包含的內容。但爲了使用WAF運行相同的代碼,我必須取消它們的註釋。 – 2012-07-09 08:57:11

+0

當你用'WAF'構建時,是不是正在運行'moc'編譯器? – pmr 2012-07-09 09:07:09

回答

0

由於提供的信息有限,我只能展示的是什麼WAF可以這樣做:

你要麼可以包括建設部文件未處理文件。

  • 操場/ slow_qt/
  • 演示/ QT4/

對於completness起見,簡化的例子:

實例在https://code.google.com/p/waf/downloads/detail?name=waf-1.6.11.tar.bz2

子目錄包括在分佈式源:

默認包括

def options(opt): 
opt.load('compiler_cxx qt4') 

def configure(conf): 
conf.load('compiler_cxx qt4') 
conf.load('slow_qt4') 

def build(bld): 
bld(
    features = 'qt4 cxx cxxprogram', 
    uselib = 'QTCORE QTGUI QTOPENGL QTSVG', 
    source = 'some.cpp files.cpp', 
    includes = '.', 
    target = 'dummy', 
) 

MOC CPP

def options(opt): 
opt.load('compiler_cxx qt4') 

def configure(conf): 
conf.load('compiler_cxx qt4') 

def build(bld): 
bld(
    features = 'qt4 cxx cxxprogram', 
    uselib = 'QTCORE QTGUI QTOPENGL QTSVG', 
    source = 'some.cpp files.cpp', 
    target = 'dummy', 
    includes = '.') 
) 
+0

我正在尋找一種避免包含程序從qt運行的方式。 – 2012-07-11 07:41:26

+0

如果你包含你的cpp文件,並使用第一個示例代碼段,它應該沒問題。根本不需要moc。無論哪種方式,發佈您的確切錯誤信息。 – drahnr 2012-07-11 08:59:58