cmQtAutogen: Allow specifying depends for autogen targets.
Test this by generating files with a custom target, which moc requires to be present when it is run.
This commit is contained in:
parent
da6b86f4f0
commit
1320e0768e
|
@ -80,6 +80,7 @@ Properties on Targets
|
||||||
/prop_tgt/ARCHIVE_OUTPUT_DIRECTORY
|
/prop_tgt/ARCHIVE_OUTPUT_DIRECTORY
|
||||||
/prop_tgt/ARCHIVE_OUTPUT_NAME_CONFIG
|
/prop_tgt/ARCHIVE_OUTPUT_NAME_CONFIG
|
||||||
/prop_tgt/ARCHIVE_OUTPUT_NAME
|
/prop_tgt/ARCHIVE_OUTPUT_NAME
|
||||||
|
/prop_tgt/AUTOGEN_TARGET_DEPENDS
|
||||||
/prop_tgt/AUTOMOC_MOC_OPTIONS
|
/prop_tgt/AUTOMOC_MOC_OPTIONS
|
||||||
/prop_tgt/AUTOMOC
|
/prop_tgt/AUTOMOC
|
||||||
/prop_tgt/AUTOUIC
|
/prop_tgt/AUTOUIC
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
AUTOGEN_TARGET_DEPENDS
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
Target dependencies of the corresponding ``_automoc`` target.
|
||||||
|
|
||||||
|
Targets which have their :prop_tgt:`AUTOMOC` target set to true have a
|
||||||
|
corresponding ``_automoc`` target which is used to autogenerate generate moc
|
||||||
|
files. As this ``_automoc`` target is created at generate-time, it is not
|
||||||
|
possible to define dependencies of it, such as to create inputs for the moc
|
||||||
|
executable.
|
||||||
|
|
||||||
|
The ``AUTOGEN_TARGET_DEPENDS`` target can be set instead to a list of dependencies
|
||||||
|
for the ``_automoc`` target. The buildsystem will be generated to depend on its
|
||||||
|
contents.
|
|
@ -204,6 +204,11 @@ bool cmQtAutoGenerators::InitializeAutogenTarget(cmTarget* target)
|
||||||
"", makefile->GetCurrentOutputDirectory());
|
"", makefile->GetCurrentOutputDirectory());
|
||||||
|
|
||||||
std::vector<std::string> depends;
|
std::vector<std::string> depends;
|
||||||
|
if (const char *autogenDepends =
|
||||||
|
target->GetProperty("AUTOGEN_TARGET_DEPENDS"))
|
||||||
|
{
|
||||||
|
cmSystemTools::ExpandListArgument(autogenDepends, depends);
|
||||||
|
}
|
||||||
std::vector<std::string> toolNames;
|
std::vector<std::string> toolNames;
|
||||||
if (target->GetPropertyAsBool("AUTOMOC"))
|
if (target->GetPropertyAsBool("AUTOMOC"))
|
||||||
{
|
{
|
||||||
|
|
|
@ -43,10 +43,17 @@ add_library(codeeditorLib STATIC codeeditor.cpp)
|
||||||
|
|
||||||
add_library(privateSlot OBJECT private_slot.cpp)
|
add_library(privateSlot OBJECT private_slot.cpp)
|
||||||
|
|
||||||
|
add_custom_target(generate_moc_input
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/myinterface.h.in" "${CMAKE_CURRENT_BINARY_DIR}"
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E rename "${CMAKE_CURRENT_BINARY_DIR}/myinterface.h.in" "${CMAKE_CURRENT_BINARY_DIR}/myinterface.h"
|
||||||
|
)
|
||||||
|
# set_source_files_properties("${CMAKE_CURRENT_BINARY_DIR}/myinterface.h" PROPERTIES GENERATED TRUE)
|
||||||
|
|
||||||
add_executable(QtAutogen main.cpp calwidget.cpp foo.cpp blub.cpp bar.cpp abc.cpp
|
add_executable(QtAutogen main.cpp calwidget.cpp foo.cpp blub.cpp bar.cpp abc.cpp
|
||||||
xyz.cpp yaf.cpp gadget.cpp $<TARGET_OBJECTS:privateSlot>
|
xyz.cpp yaf.cpp gadget.cpp $<TARGET_OBJECTS:privateSlot>
|
||||||
test.qrc resourcetester.cpp
|
test.qrc resourcetester.cpp generated.cpp
|
||||||
)
|
)
|
||||||
|
set_property(TARGET QtAutogen APPEND PROPERTY AUTOGEN_TARGET_DEPENDS generate_moc_input)
|
||||||
|
|
||||||
set_target_properties(QtAutogen codeeditorLib privateSlot PROPERTIES AUTOMOC TRUE)
|
set_target_properties(QtAutogen codeeditorLib privateSlot PROPERTIES AUTOMOC TRUE)
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
|
||||||
|
#include "generated.h"
|
||||||
|
|
||||||
|
Generated::Generated(QObject *parent)
|
||||||
|
: QObject(parent)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#include "moc_generated.cpp"
|
|
@ -0,0 +1,17 @@
|
||||||
|
|
||||||
|
#ifndef GENERATED_H
|
||||||
|
#define GENERATED_H
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
|
||||||
|
#include "myinterface.h"
|
||||||
|
|
||||||
|
class Generated : public QObject, MyInterface
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
Q_INTERFACES(MyInterface)
|
||||||
|
public:
|
||||||
|
explicit Generated(QObject *parent = 0);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,14 @@
|
||||||
|
|
||||||
|
#ifndef MYINTERFACE_H
|
||||||
|
#define MYINTERFACE_H
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
|
||||||
|
class MyInterface
|
||||||
|
{
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
Q_DECLARE_INTERFACE(MyInterface, "org.cmake.example.MyInterface")
|
||||||
|
|
||||||
|
#endif
|
Loading…
Reference in New Issue