qjson-devel Mailing List for QJson (Page 3)
Brought to you by:
flavio_castelli
You can subscribe to this list here.
2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(5) |
Jul
(10) |
Aug
|
Sep
(4) |
Oct
(2) |
Nov
(7) |
Dec
(4) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2010 |
Jan
(5) |
Feb
(2) |
Mar
|
Apr
(4) |
May
(3) |
Jun
|
Jul
(4) |
Aug
(3) |
Sep
(5) |
Oct
(4) |
Nov
(5) |
Dec
(5) |
2011 |
Jan
(3) |
Feb
(11) |
Mar
(1) |
Apr
(8) |
May
(1) |
Jun
|
Jul
(3) |
Aug
(17) |
Sep
(7) |
Oct
(4) |
Nov
(2) |
Dec
(5) |
2012 |
Jan
(2) |
Feb
|
Mar
(5) |
Apr
(1) |
May
(3) |
Jun
(4) |
Jul
(2) |
Aug
(1) |
Sep
(1) |
Oct
(4) |
Nov
(26) |
Dec
|
2013 |
Jan
|
Feb
(2) |
Mar
(2) |
Apr
|
May
(5) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2014 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
(1) |
Aug
(1) |
Sep
(1) |
Oct
|
Nov
|
Dec
|
2015 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
(2) |
2017 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Flavio C. <fl...@ca...> - 2012-07-02 16:48:19
|
On 06/15/2012 09:28 PM, Robert Kulagowski wrote: > Can someone provide an example of code that would let me get access to > the channel information that's in the ChanInfo array and the "version" > for example? I didn't test the code, but I would do something like that: QVariant devType; foreach (devType, result["DeviceTypes"].toList()) { qDebug() << "Device: " << devType.toString(); QVariantMap devInfo = result[devYype.toString()].toMap(); qDebug() << " - Version:" << devInfo["version"].toString(); qDebug() << " - Chan data:"; QVariant tmp; foreach (tmp, devInfo["ChanData"].toList()) { QVariantMap chanData = tmp.toMap(); qDebug() << " - station id:" << chanData["stationid"].toString(); qDebug() << " - call sign:" << chanData["callsign"].toString(); // same for url and channel } } Cheers Flavio |
From: 蔡火胜 <cai...@gm...> - 2012-06-21 09:42:42
|
Hello, When I set the type of one property to be quint16 , I can't get the object serialized . Is it intended ? The code is like this: class TunnelResultObject : public QObject { Q_OBJECT Q_PROPERTY(bool Success READ GetSuccess WRITE SetSuccess) //!<隧道开启是 否成功。 Q_PROPERTY(int Port READ GetPort WRITE SetPort) //!<隧道的端口号。 …… I can serialize this successfully. If I change the type of Port to be quint16 , then I got an empty string as the serialization result . What's the reason? |
From: Robert K. <rku...@gm...> - 2012-06-15 19:29:14
|
I'm developing a format for exchanging information related to television programs and how a provider maps their channel number to stations. The program that creates the files is written in perl, and creates output that looks like this: { "name" : "R&R Cable Co", "location" : "Roslyn", "DeviceTypes" : [ "Analog", "L", "X" ], "X" : { "ChanData" : [ { "stationid" : "16715", "callsign" : "TVGN", "url" : "http://localhost/schedulesdirect//process.php?command=get&p1=schedule&p2=16715", "channel" : "002" }, { "stationid" : "12499", "callsign" : "ABCFP", "url" : "http://localhost/schedulesdirect//process.php?command=get&p1=schedule&p2=12499", "channel" : "003" }, { "stationid" : "10626", "callsign" : "KOMO", "url" : "http://localhost/schedulesdirect//process.php?command=get&p1=schedule&p2=10626", "channel" : "004" }, { "stationid" : "10518", "callsign" : "KING", "url" : "http://localhost/schedulesdirect//process.php?command=get&p1=schedule&p2=10518", "channel" : "005" }, <snip> { "stationid" : "11126", "callsign" : "FRESH", "url" : "http://localhost/schedulesdirect//process.php?command=get&p1=schedule&p2=11126", "channel" : "918" } ], "version" : "2", "modified" : "2012-06-12" }, "L" : { "ChanData" : [ { "stationid" : "16715", "callsign" : "TVGN", "url" : "http://localhost/schedulesdirect//process.php?command=get&p1=schedule&p2=16715", "channel" : "002" }, { "stationid" : "52630", "callsign" : "KAPPDT2", "url" : "http://localhost/schedulesdirect//process.php?command=get&p1=schedule&p2=52630", "channel" : "003" }, (etc) I wrote some C++ QT: QJson::Parser parser; bool ok; QVariantMap result = parser.parse(lineupdata, &ok).toMap(); if (!ok) { printf("line %d: %s\n", parser.errorLine(), parser.errorString().toUtf8().data()); return false; } qDebug() << "Location: " << result["location"].toString(); qDebug() << "Name: " << result["name"].toString(); QVariant devtypes; foreach (devtypes, result["DeviceTypes"].toList()) { qDebug() << "Device: " << devtypes.toString(); } Which gives me: Location: "Roslyn" Name: "R&R Cable Co" Device: "Analog" Device: "L" Device: "X" so far, so good, and that gets me the outermost level of data. However, I've run into more of a stumbling block as I try to dig deeper, and I think it's because of how I'm trying to nest the information. I've tried various combinations of lists and maps to get deeper, but I'm either getting null or long chains of QVariant dumps. Can someone provide an example of code that would let me get access to the channel information that's in the ChanInfo array and the "version" for example? Of course, if the data structure that I'm trying to import is too complicated, then I can make adjustments in the perl that's creating the output you see above. Thanks. |
From: Jean N. <jea...@ae...> - 2012-06-14 12:20:40
|
Hi I don't know how to manage a patch, but if I can show how I solve my problem. My property is an enum and to convert a string to that enum, I made some changes (in red ) in qvariant2qobject. I don't know if this is interesting for you? Regards Jean void QObjectHelper::qvariant2qobject(const QVariantMap& variant, QObject* object) { const QMetaObject *metaobject = object->metaObject(); QVariantMap::const_iterator iter; for (iter = variant.constBegin(); iter != variant.constEnd(); ++iter) { int pIdx = metaobject->indexOfProperty( iter.key().toAscii() ); if ( pIdx < 0 ) { continue; } QMetaProperty metaproperty = metaobject->property( pIdx ); QVariant::Type type = metaproperty.type(); QVariant v( iter.value() ); if (metaproperty.isEnumType()) { QMetaEnum metaEnum = metaproperty.enumerator(); type = QVariant::Int; v = metaEnum.keyToValue(v.toByteArray().data()); } if ( v.canConvert( type ) ) { v.convert( type ); metaproperty.write( object, v ); } else if (QString(QLatin1String("QVariant")).compare(QLatin1String(metaproperty.t ypeName())) == 0) { metaproperty.write( object, v ); } } } My emun enum eDeviceTypes { Ap3, Ap8, T130, T123, T145, SirAlim, Asc2, PC, Automate, CallPoint }; My data { "Devices": [ { "Address": 1, "DeviceType": "T123", }, { "Address": 2, "DeviceType": "Ap8", } ] } |
From: André H. <and...@is...> - 2012-06-06 12:49:20
|
Hello, I have a class containing a QString and an inner class. The inner class also contains a QString. (QJson is from git, Qt version is 4.7.4) class OuterClass : public QObject { Q_OBJECT Q_PROPERTY(QString value READ value WRITE setValue) Q_PROPERTY(InnerClass inner READ inner WRITE setInner) // ... } class InnerClass : public QObject { Q_OBJECT Q_PROPERTY(QString value READ value WRITE setValue) // ... } Is it possible to serialize this contruction to the following JSON? { "inner" : { "value" : "World" }, "value" : "Hello" } When I use the following code (also see attachments): void test() { qRegisterMetaType<InnerClass>("InnerClass"); InnerClass inner; inner.setValue("World"); OuterClass outer; outer.setValue("Hello"); outer.setInner(inner); QVariantMap variantMap = QObjectHelper::qobject2qvariant(&outer); Serializer serializer; qDebug() << serializer.serialize(variantMap); } I get the following error: QMetaProperty::read: Unable to handle unregistered datatype 'InnerClass' for property 'OuterClass::inner' "{ "inner" : null, "value" : "Hello" }" Any hints? Thanks in advance for your help. André |
From: Aaron L. <the...@gm...> - 2012-05-14 10:08:25
|
On 11:50 Mon 14 May , Flavio Castelli wrote: > On 05/13/2012 11:30 AM, Aaron Lewis wrote: > > So .. was it a bug ? > > No it's not a bug inside of QJson. The data you posted does not respect > json's grammar. Thanks for the heads up. > > Cheers > Flavio > > ------------------------------------------------------------------------------ > Live Security Virtual Conference > Exclusive live event will cover all the ways today's security and > threat landscape has changed and how IT managers can respond. Discussions > will include endpoint security, mobile security and the latest in malware > threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ > _______________________________________________ > QJson-devel mailing list > QJs...@li... > https://lists.sourceforge.net/lists/listinfo/qjson-devel -- Best Regards, Aaron Lewis - PGP: 0xDFE6C29E ( http://pgp.mit.edu/ ) Finger Print: 9482 448F C7C3 896C 1DFE 7DD3 2492 A7D0 DFE6 C29E |
From: Flavio C. <fl...@ca...> - 2012-05-14 09:51:13
|
On 05/13/2012 11:30 AM, Aaron Lewis wrote: > So .. was it a bug ? No it's not a bug inside of QJson. The data you posted does not respect json's grammar. Cheers Flavio |
From: Aaron L. <the...@gm...> - 2012-05-13 09:30:59
|
Hi, I found some website use jsons like the following: {a:3} Browsers has no problems parsing this , but QJson won't parse it. Only if i "a" is wrapped like: {"a":3} So .. was it a bug ? Thanks ! -- Best Regards, Aaron Lewis - PGP: 0xDFE6C29E ( http://pgp.mit.edu/ ) Finger Print: 9482 448F C7C3 896C 1DFE 7DD3 2492 A7D0 DFE6 C29E |
From: Björn R. <bjo...@st...> - 2012-04-02 12:19:58
|
Okay, this was my fault. Tried to link a QJson Release build into a Debug build of my project. To bad. Now it works :) Am 31.03.2012 22:06, schrieb Ruberg, Bjoern: > Hello, > > I try to use QJson inside of a research project. I'm running this on > Windows 7 with Visual Studio (I'm forced to...). I successfully > compiled the library and integrated it into my project. > The parser works very good. > > But when I try to use the serializer, I get crashfaults. This is my code: > > { > QJson::Parser parser; > > bool ok; > // json is a QString containing the data to convert > QVariantMap result = parser.parse(json.toAscii(), &ok).toMap(); > QVariantMap data = result["data"].toMap(); > > int x = data["x"].toInt(); > int y = data["y"].toInt(); > > qDebug() << "x: " << x << " y: " << y; > > QVariantMap response; > response.insert("x", x + 100); > response.insert("y", y + 100); > > > QJson::Serializer serializer; > QByteArray resp = serializer.serialize(response); > } // <--- here it crashs > > Actually the crash is happending at the closing bracket when all the > stuff is destructed. The message from studio is: > Invalid address specified to RtlValidateHeap( 005C0000, 0068A548 ) > > I played around with the code. Changed everything to pointers, even > serialized emtpy objects, but every time got exactly the same error. > Now I'm out of ideas. > > Any ideas? > > Thanks > > Björn Ruberg |
From: Björn R. <bjo...@st...> - 2012-03-31 20:06:40
|
Hello, I try to use QJson inside of a research project. I'm running this on Windows 7 with Visual Studio (I'm forced to...). I successfully compiled the library and integrated it into my project. The parser works very good. But when I try to use the serializer, I get crashfaults. This is my code: { QJson::Parser parser; bool ok; // json is a QString containing the data to convert QVariantMap result = parser.parse(json.toAscii(), &ok).toMap(); QVariantMap data = result["data"].toMap(); int x = data["x"].toInt(); int y = data["y"].toInt(); qDebug() << "x: " << x << " y: " << y; QVariantMap response; response.insert("x", x + 100); response.insert("y", y + 100); QJson::Serializer serializer; QByteArray resp = serializer.serialize(response); } // <--- here it crashs Actually the crash is happending at the closing bracket when all the stuff is destructed. The message from studio is: Invalid address specified to RtlValidateHeap( 005C0000, 0068A548 ) I played around with the code. Changed everything to pointers, even serialized emtpy objects, but every time got exactly the same error. Now I'm out of ideas. Any ideas? Thanks Björn Ruberg |
From: Iftimie C. <ice...@gm...> - 2012-03-25 01:35:56
|
I'm developing a facebook application which makes a complex multiquery and returns "big" responce. After getting the request out from the server (I'm using the api.facebook.com/method/fql.multiquery), I get a QNetworkReply. I've connected this reply so it writes (when readyRead signal) the received data into a buffer. At this moment I'm not sure if it is the best option. I don't know other approach this matter since I'm not that so experienced with QT. How do I process those large replies? Does QJson has such a thing? I've tried to do this with QJson::Parser parser; qDebug()<<r_aux->size(); //r_aux->buffer().prepend("{\"data\":"); //r_aux->buffer().append("}"); QVariant data=parser.parse(r_aux,&ok); qDebug()<<data; if (!ok) qWarning() << "Error while parsing network reply: "; Where r_aux is my QBuffer. This outputs: 72499 QVariant(, ). Because my reply starts with "[" and ends "]" I've tried to add my own {"data": and }, but this fails also. At output 72499 json_parser - syntax error found, forcing abort, Line 1 Column 0 QVariant(qulonglong, 4754) I know for sure that I get a the same reply I would get from a browser (I've done the qDebug<<reply->readAll() inside the slot connected to the readyRead signal) For testing porpuses I'll provide the url here: https://api.facebook.com/method/fql.multiquery?format=json&queries=%7B%22query1%22%3A%22SELECT%20uid2%20FROM%20friend%20WHERE%20uid1%3Dme%28%29%22%2C%22query2%22%3A%22SELECT%20uid%2C%20name%20FROM%20user%20WHERE%20uid%20in%28SELECT%20uid2%20FROM%20%23query1%29%22%2C%22query3%22%3A%22SELECT%20uid%2C%20status_id%2Cmessage%2Cplace_id%2Ctime%20FROM%20status%20WHERE%20uid%20IN%20%28SELECT%20uid2%20FROM%20%23query1%29%22%2C%22query4%22%3A%22SELECT%20author_uid%2C%20checkin_id%2Cpage_id%2Ccoords%2Cmessage%2Ctimestamp%20FROM%20checkin%20WHERE%20author_uid%20IN%20%28SELECT%20uid2%20FROM%20%23query1%29%22%2C%22query5%22%3A%22SELECT%20name%2Clatitude%2Clongitude%20FROM%20place%20WHERE%20page_id%20IN%28SELECT%20place_id%20from%20%23query3%29%20OR%20page_id%20IN%28SELECT%20page_id%20FROM%20%23query4%20%29%22%7D&access_token=xxxxxxx Any ideas will be really appreciated. Thank you in advance |
From: Flavio C. <fl...@ca...> - 2012-03-14 13:38:45
|
On 03/14/2012 12:54 PM, Vyshakh Ashok wrote: > However i am getting the output as: > So the question here is, why does the square brackets (shown in red) > appear? Which means, the output is an Array? > Whereas in the output which i wanted, it should be just a single JSON > object, whose name is "session" and value is another JSON object having > four name/value pairs. > > How do i get rid of this Square bracket? That happens because you put the map (session) inside of an array (responseBody) and then you serialized responseBody. Just serialize session (the QVariantMap instance). Cheers Flavio |
From: Vyshakh A. <vy...@gm...> - 2012-03-14 11:55:07
|
Hi I am using the QJSon library for one of my requirement. I'm having a requirement, wherein i want the JSON data to appear like this: *{ "session": { "Capabilities": "/1/capabilities", "Events": "/1/events", "Player": "/1/player", "SessionID": "1" } }* For achieving this i did the following: QVariantList responseBody; QByteArray qP2SessionId = QByteArray::number( getCurrentSessionId() ); QVariantMap session; QVariantMap sessionBody; sessionBody.insert("SessionID", qP2SessionId); sessionBody.insert("Capabilities", "/"+qP2SessionId+"/capabilities"); sessionBody.insert("Player", "/"+qP2SessionId+"/player"); sessionBody.insert("Events", "/"+qP2SessionId+"/events"); session.insert("session", sessionBody ); responseBody<< session; QJson::Serializer serializer; QByteArray json = serializer.serialize( responseBody ); However i am getting the output as: *[* * { "session": { "Capabilities": "/1/capabilities", "Events": "/1/events", "Player": "/1/player", "SessionID": "1" } }* *]* So the question here is, why does the square brackets (shown in red) appear? Which means, the output is an Array? Whereas in the output which i wanted, it should be just a single JSON object, whose name is "session" and value is another JSON object having four name/value pairs. How do i get rid of this Square bracket? Thanks, *----------------------------------------------- Best Regards, Vyshakh Ashok * |
From: <al...@il...> - 2012-03-01 02:48:42
|
This is probably easy for someone but I'm used to Gnome and gcc on Solaris so I haven't got a clue. Trying to compile libechonest and it needs Qt and QJson. QT was easy enough after doing a little web searching and QJson was even easier. However when I got to libechonest it seems that it may been easy but not properly integrated. The cmake for libechonest reveals: -- Looking for Q_WS_X11 -- Looking for Q_WS_X11 - found -- Looking for Q_WS_WIN -- Looking for Q_WS_WIN - not found. -- Looking for Q_WS_QWS -- Looking for Q_WS_QWS - not found. -- Looking for Q_WS_MAC -- Looking for Q_WS_MAC - not found. -- Found Qt4: /usr/local/Trolltech/Qt-4.8.0/bin/qmake (found version "4.8.0") -- checking for module 'QJson>=0.5' -- package 'QJson>=0.5' not found CMake Error at /usr/local/share/cmake-2.8/Modules/FindPkgConfig.cmake:266 (message): A required package was not found Call Stack (most recent call first): /usr/local/share/cmake-2.8/Modules/FindPkgConfig.cmake:320 (_pkg_check_modules_internal) cmake/FindQJSON.cmake:20 (pkg_check_modules) CMakeLists.txt:15 (find_package) -- Found QJSON: /usr/local/lib/libqjson.so -- Found Doxygen: /usr/bin/doxygen -- Configuring incomplete, errors occurred! So it looks like Qt is looking for a package called QJson and not finding it. Setting LD_LIBRARY_PATH or PKG_CONFIG_PATH or LDFLAGS and it seems to find QJson but doesn't compile properly: [ 69%] Building CXX object tests/CMakeFiles/ArtistTest.dir/ArtistTest.cpp.o Linking CXX executable ArtistTest Undefined first referenced symbol in file QJson::Parser::Parser() ../src/libechonest.so.1.2.0 QJson::Parser::~Parser() ../src/libechonest.so.1.2.0 QJson::Serializer::Serializer() ../src/libechonest.so.1.2.0 QJson::Serializer::~Serializer() ../src/libechonest.so.1.2.0 QJson::Parser::parse(QIODevice*, bool*) ../src/libechonest.so.1.2.0 QJson::Parser::parse(QByteArray const&, bool*) ../src/libechonest.so.1.2.0 QJson::Parser::errorString() const ../src/libechonest.so.1.2.0 QJson::Serializer::serialize(QVariant const&) ../src/libechonest.so.1.2.0 ld: fatal: symbol referencing errors. No output written to ArtistTest Could someone point me in the right direction? Thanks in advance. alan |
From: Flavio C. <fl...@ca...> - 2012-01-31 09:20:49
|
On 01/31/2012 12:21 AM, Malte Nuhn wrote: > I'm trying to compile qjson on my Mac OS X, Version 10.7.2. > During the linking step, I get the following error I just merged a pull request on master that makes possible to build qjson as an OS X framework. Maybe it could help you. Unfortunately I no longer have access to an OS X machine. Flavio |
From: Malte N. <mal...@rw...> - 2012-01-30 23:21:24
|
Hi, I'm trying to compile qjson on my Mac OS X, Version 10.7.2. During the linking step, I get the following error Linking CXX shared library ../lib/libqjson.dylib ld: in /Library/Frameworks/QtCore.framework, can't map file, errno=22 for architecture x86_64 Some random information that might be helpful here: - file /Library/Frameworks/QtCore.framework/QtCore: Mach-O 64-bit dynamically linked shared library x86_64 - My macbook boots in 32bit kernel mode, but my processor supports 64 bit. Below the full output during compilation. Do you guys know what I need to do, to fix the problem? Thanks in advance, Malte Nuhn cmake -DCMAKE_INSTALL_PREFIX=/Users/mnuhn/software/ .. -- The C compiler identification is GNU -- The CXX compiler identification is GNU -- Checking whether C compiler has -isysroot -- Checking whether C compiler has -isysroot - yes -- Checking whether C compiler supports OSX deployment target flag -- Checking whether C compiler supports OSX deployment target flag - yes -- Check for working C compiler: /usr/bin/gcc -- Check for working C compiler: /usr/bin/gcc -- works -- Detecting C compiler ABI info m-- Detecting C compiler ABI info - done a-- Checking whether CXX compiler has -isysroot -- Checking whether CXX compiler has -isysroot - yes -- Checking whether CXX compiler supports OSX deployment target flag k-- Checking whether CXX compiler supports OSX deployment target flag - yes -- Check for working CXX compiler: /usr/bin/c++ e -- Check for working CXX compiler: /usr/bin/c++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Looking for Q_WS_X11 -- Looking for Q_WS_X11 - not found. -- Looking for Q_WS_WIN -- Looking for Q_WS_WIN - not found. -- Looking for Q_WS_QWS -- Looking for Q_WS_QWS - not found. -- Looking for Q_WS_MAC -- Looking for Q_WS_MAC - found -- Looking for QT_MAC_USE_COCOA -- Looking for QT_MAC_USE_COCOA - found -- Found Qt-Version 4.8.0 (using /usr/bin/qmake) -- Configuring done -- Generating done -- Build files have been written to: /Users/mnuhn/software/qjson/build [00:10:36] mnuhn@codebook 0 ~/software/qjson/build make [ 9%] Generating moc_serializerrunnable.cxx [ 18%] Generating moc_parserrunnable.cxx Scanning dependencies of target qjson [ 27%] Building CXX object src/CMakeFiles/qjson.dir/parser.cpp.o [ 36%] Building CXX object src/CMakeFiles/qjson.dir/qobjecthelper.cpp.o [ 45%] Building CXX object src/CMakeFiles/qjson.dir/json_scanner.cpp.o [ 54%] Building CXX object src/CMakeFiles/qjson.dir/json_parser.cc.o [ 63%] Building CXX object src/CMakeFiles/qjson.dir/parserrunnable.cpp.o [ 72%] Building CXX object src/CMakeFiles/qjson.dir/serializer.cpp.o /Users/mnuhn/software/qjson/src/serializer.cpp: In member function ‘QByteArray QJson::Serializer::SerializerPrivate::serialize(const QVariant&, int)’: /Users/mnuhn/software/qjson/src/serializer.cpp:163: warning: comparison between ‘enum QVariant::Type’ and ‘enum QMetaType::Type’ [ 81%] Building CXX object src/CMakeFiles/qjson.dir/serializerrunnable.cpp.o [ 90%] Building CXX object src/CMakeFiles/qjson.dir/moc_parserrunnable.cxx.o [100%] Building CXX object src/CMakeFiles/qjson.dir/moc_serializerrunnable.cxx.o Linking CXX shared library ../lib/libqjson.dylib ld: in /Library/Frameworks/QtCore.framework, can't map file, errno=22 for architecture x86_64 collect2: ld returned 1 exit status make[2]: *** [lib/libqjson.0.7.1.dylib] Error 1 make[1]: *** [src/CMakeFiles/qjson.dir/all] Error 2 make: *** [all] Error 2 [00:10:46] mnuhn@codebook 0 ~/software/qjson/build |
From: Raphael K. da C. <ra...@fr...> - 2011-12-13 01:45:15
|
"Jonas M. Gastal" <jok...@gm...> writes: > As for being a source incompatible change, that isn't true of most *nix > systems since they have "${CMAKE_INSTALL_PREFIX}/include" as the standard > include dir, That depends on the value of CMAKE_INSTALL_PREFIX. If one installs qjson into, say, /opt/qjson or anything else that's not on the compiler's default include path, it will fail. The second version looks more reasonable IMO (technically, the value in the config file should be called QJSON_INCLUDE_DIRS, but that's orthogonal to this change). |
From: Jonas M. G. <jok...@gm...> - 2011-12-13 00:59:35
|
On Monday, December 12, 2011 06:51:48 PM Raphael Kubo da Costa wrote: > This will make the headers be installed into > ${CMAKE_INSTALL_PREFIX}/include/qjson/qjson, so the problem is not going > away. > > If you adjust the patch and do set INCLUDE_INSTALL_DIR to > ${CMAKE_INSTALL_PREFIX}/include/qjson and install the headers there, > code which currently uses #include <qjson/foo.h> will break. I'm not > sure the project has a policy against that, but this would be a > source-incompatible change. Opps, my bad, I've attached the fixed patch. As for being a source incompatible change, that isn't true of most *nix systems since they have "${CMAKE_INSTALL_PREFIX}/include" as the standard include dir, I've no idea about how that would be in windows tough, so I'm also attaching a patch that makes this change not source incompatible by having the include dir be both "${CMAKE_INSTALL_PREFIX}/include" and "${CMAKE_INSTALL_PREFIX}/include/qjson". Having more include dirs is not ideal, but it might a good solution if source compatibility is a concern. Regards, Gastal |
From: Raphael K. da C. <rakuco@FreeBSD.org> - 2011-12-12 20:52:08
|
"Jonas M. Gastal" <jok...@gm...> writes: > This patch changes the include dir for pkg-config and cmake to be the full > path(i.e.: /usr/include/qjson instead of /usr/include). There is no point in > adding the default include dir as the include dir for QJson, and it's a pain > to have to do "#include <qjson/serializer.h>" instead of "#include > <serializer.h>". > > Regards, > Gastal > > P.S. Please CC me, I'm not on the list. > > diff --git a/CMakeLists.txt b/CMakeLists.txt > index efbcaab..0172ec4 100644 > --- a/CMakeLists.txt > +++ b/CMakeLists.txt > @@ -40,7 +40,7 @@ INCLUDE( ${QT_USE_FILE} ) > #add extra search paths for libraries and includes > SET (LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)" ) > SET (LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}" CACHE STRING "Directory where lib will install") > -SET (INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "The directory the headers are installed in") > +SET (INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include/qjson" CACHE PATH "The directory the headers are installed in") > SET (CMAKECONFIG_INSTALL_DIR "${LIB_INSTALL_DIR}/cmake/${CMAKE_PROJECT_NAME}" CACHE PATH "Directory where to install QJSONConfig.cmake") > > set(QJSON_LIB_MAJOR_VERSION "0") This will make the headers be installed into ${CMAKE_INSTALL_PREFIX}/include/qjson/qjson, so the problem is not going away. If you adjust the patch and do set INCLUDE_INSTALL_DIR to ${CMAKE_INSTALL_PREFIX}/include/qjson and install the headers there, code which currently uses #include <qjson/foo.h> will break. I'm not sure the project has a policy against that, but this would be a source-incompatible change. |
From: Jonas M. G. <jok...@gm...> - 2011-12-10 11:41:28
|
This patch changes the include dir for pkg-config and cmake to be the full path(i.e.: /usr/include/qjson instead of /usr/include). There is no point in adding the default include dir as the include dir for QJson, and it's a pain to have to do "#include <qjson/serializer.h>" instead of "#include <serializer.h>". Regards, Gastal P.S. Please CC me, I'm not on the list. |
From: Flavio C. <fl...@ca...> - 2011-12-05 10:48:51
|
During the weekend I merged two pull requests that should hopefully fix all the cmake issues that affected qjson. I'll wait a couple of days and if no issues are reported I'll release a new version of qjson. Cheers Flavio |
From: Flavio C. <fl...@ca...> - 2011-11-29 17:23:50
|
On Tuesday, November 29, 2011 10:06:49 Jeff Womble wrote: > I've just installed QJson using the package manager. I know I need to > link with the library (-lqjson), but I don't see any header files. What > should have been installed, and where should I find them? You have to install libqjson-dev Flavio |
From: Jeff W. <jw...@tr...> - 2011-11-29 16:47:55
|
Hello, I've just installed QJson using the package manager. I know I need to link with the library (-lqjson), but I don't see any header files. What should have been installed, and where should I find them? Thanks, Jeff |
From: Raphael K. da C. <rakuco@FreeBSD.org> - 2011-10-29 00:42:51
|
Kirell Benzi <kir...@gm...> writes: > The building part runs fine using CMAKE with a custom install path. > > cmake -DCMAKE_INSTALL_PREFIX=${HOME}/Projects/libs/ -DCMAKE_INCLUDE_PATH=${HOME}/Projects/libs/include -DCMAKE_LIBRARY_PATH=${HOME}/Projects/libs/lib .. > > I have a warning of cmake telling me the Library path is ignored, well, fine .. You might want to take a look at the CMAKE_PREFIX_PATH variable, btw. > However I can't link against the library. > > In a Qt pro: > > INCLUDEPATH += /Users/kikohs/Projects/libs/include/qjson > LIBS += -L/Users/kikohs/Projects/libs/lib/ -lqjson I got confused here -- are you using CMake or qmake to build your project? Is the code accessible somewhere? |
From: Kirell B. <kir...@gm...> - 2011-10-27 16:29:45
|
Hello, This is the config: Qt 4.7.4, Mac OS Lion I would like to use QJSON in a qt project. The building part runs fine using CMAKE with a custom install path. cmake -DCMAKE_INSTALL_PREFIX=${HOME}/Projects/libs/ -DCMAKE_INCLUDE_PATH=${HOME}/Projects/libs/include -DCMAKE_LIBRARY_PATH=${HOME}/Projects/libs/lib .. I have a warning of cmake telling me the Library path is ignored, well, fine .. However I can't link against the library. In a Qt pro: INCLUDEPATH += /Users/kikohs/Projects/libs/include/qjson LIBS += -L/Users/kikohs/Projects/libs/lib/ -lqjson This is the result for otool -L on my binary: /Users/kikohs/Projects/libs/lib/libtag.1.dylib (compatibility version 1.0.0, current version 1.7.0) libqjson.0.dylib (compatibility version 0.0.0, current version 0.7.1) /Users/kikohs/QtSDK/Desktop/Qt/474/gcc/lib/phonon.framework/Versions/4/phonon (compatibility version 4.4.0, current version 4.4.0) /Users/kikohs/QtSDK/Desktop/Qt/474/gcc/lib/QtSql.framework/Versions/4/QtSql (compatibility version 4.7.0, current version 4.7.4) /Users/kikohs/QtSDK/Desktop/Qt/474/gcc/lib/QtGui.framework/Versions/4/QtGui (compatibility version 4.7.0, current version 4.7.4) /Users/kikohs/QtSDK/Desktop/Qt/474/gcc/lib/QtNetwork.framework/Versions/4/QtNetwork (compatibility version 4.7.0, current version 4.7.4) /Users/kikohs/QtSDK/Desktop/Qt/474/gcc/lib/QtCore.framework/Versions/4/QtCore (compatibility version 4.7.0, current version 4.7.4) /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 52.0.0) /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1105.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0) As you can see there is no prefix path for qjson where it should be. I would appreciate any help. Thank you, Kirell |