Simplify header-only mode usage

It's sufficient to define PUGIXML_HEADER_ONLY anywhere now, source is included
automatically.

This is a second attempt; this time it includes a workaround for QMake bug
that caused it to generate incorrect Makefile.
This commit is contained in:
Arseny Kapoulkine 2015-01-09 19:29:23 -08:00
parent ff16dbdd4c
commit f3e42969a5
3 changed files with 23 additions and 1 deletions

View file

@ -39,7 +39,6 @@
// Uncomment this to switch to header-only version
// #define PUGIXML_HEADER_ONLY
// #include "pugixml.cpp"
// Uncomment this to enable long long support
// #define PUGIXML_HAS_LONG_LONG

View file

@ -1329,6 +1329,13 @@ namespace std
#endif
// Make sure implementation is included in header-only mode
// Use macro expansion in #include to work around QMake (QTBUG-11923)
#if defined(PUGIXML_HEADER_ONLY) && !defined(PUGIXML_SOURCE)
# define PUGIXML_SOURCE "pugixml.cpp"
# include PUGIXML_SOURCE
#endif
/**
* Copyright (c) 2006-2014 Arseny Kapoulkine
*

View file

@ -0,0 +1,16 @@
#define PUGIXML_HEADER_ONLY
#define pugi pugih
#include "common.hpp"
// Check header guards
#include "../src/pugixml.hpp"
#include "../src/pugixml.hpp"
TEST(header_only)
{
xml_document doc;
CHECK(doc.load_string(STR("<node/>")));
CHECK_STRING(doc.first_child().name(), STR("node"));
CHECK(doc.first_child() == doc.select_node(STR("//*")).node());
}