mirror of
https://github.com/Kitware/CMake.git
synced 2025-10-14 02:08:27 +08:00
Autogen: Fix and extend SKIP_AUTOMOC test
This commit is contained in:
@@ -114,16 +114,27 @@ target_compile_features(empty PRIVATE ${QT_COMPILE_FEATURES})
|
||||
# -- Test
|
||||
# Test for SKIP_AUTOMOC and SKIP_AUTOGEN on an AUTOMOC enabled target
|
||||
if(ALLOW_WRAP_CPP)
|
||||
# Generate header mocs manually
|
||||
qtx_wrap_cpp(skipMocWrapMoc
|
||||
skipSource/qItemA.hpp
|
||||
skipSource/qItemB.hpp)
|
||||
skipSource/qItemB.hpp
|
||||
skipSource/qItemC.hpp
|
||||
skipSource/qItemD.hpp
|
||||
)
|
||||
set(skipMocSources
|
||||
skipMoc.cpp
|
||||
skipSource/qItemA.cpp
|
||||
skipSource/qItemB.cpp
|
||||
skipSource/qItemC.cpp)
|
||||
skipSource/qItemC.cpp
|
||||
skipSource/qItemD.cpp
|
||||
)
|
||||
# When cpp files are skipped, the hpp won't be processed either,
|
||||
# unless they are mentioned in the sources - which they aren't.
|
||||
set_property(SOURCE skipSource/qItemA.cpp PROPERTY SKIP_AUTOMOC ON)
|
||||
set_property(SOURCE skipSource/qItemB.cpp PROPERTY SKIP_AUTOGEN ON)
|
||||
# When hpp files are skipped, the cpp still get processed.
|
||||
set_property(SOURCE skipSource/qItemC.hpp PROPERTY SKIP_AUTOMOC ON)
|
||||
set_property(SOURCE skipSource/qItemD.hpp PROPERTY SKIP_AUTOGEN ON)
|
||||
# AUTOMOC enabled only
|
||||
add_executable(skipMocA ${skipMocSources} ${skipMocWrapMoc})
|
||||
set_property(TARGET skipMocA PROPERTY AUTOMOC ON)
|
||||
|
@@ -2,12 +2,14 @@
|
||||
#include "skipSource/qItemA.hpp"
|
||||
#include "skipSource/qItemB.hpp"
|
||||
#include "skipSource/qItemC.hpp"
|
||||
#include "skipSource/qItemD.hpp"
|
||||
|
||||
int main(int, char**)
|
||||
{
|
||||
QItemA itemA;
|
||||
QItemA itemB;
|
||||
QItemA itemC;
|
||||
QItemB itemB;
|
||||
QItemC itemC;
|
||||
QItemD itemD;
|
||||
|
||||
// Fails to link if the symbol is not present.
|
||||
return 0;
|
||||
|
@@ -1,5 +1,17 @@
|
||||
#include "qItemC.hpp"
|
||||
|
||||
class QItemC_Local : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
QItemC_Local(){};
|
||||
~QItemC_Local(){};
|
||||
};
|
||||
|
||||
void QItemC::go()
|
||||
{
|
||||
QItemC_Local localObject;
|
||||
}
|
||||
|
||||
// We need AUTOMOC processing
|
||||
#include "qItemC.moc"
|
||||
|
17
Tests/QtAutogen/skipSource/qItemD.cpp
Normal file
17
Tests/QtAutogen/skipSource/qItemD.cpp
Normal file
@@ -0,0 +1,17 @@
|
||||
#include "qItemD.hpp"
|
||||
|
||||
class QItemD_Local : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
QItemD_Local(){};
|
||||
~QItemD_Local(){};
|
||||
};
|
||||
|
||||
void QItemD::go()
|
||||
{
|
||||
QItemD_Local localObject;
|
||||
}
|
||||
|
||||
// We need AUTOMOC processing
|
||||
#include "qItemD.moc"
|
13
Tests/QtAutogen/skipSource/qItemD.hpp
Normal file
13
Tests/QtAutogen/skipSource/qItemD.hpp
Normal file
@@ -0,0 +1,13 @@
|
||||
#ifndef QITEMD_HPP
|
||||
#define QITEMD_HPP
|
||||
|
||||
#include <QObject>
|
||||
|
||||
class QItemD : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_SLOT
|
||||
void go();
|
||||
};
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user