-
Notifications
You must be signed in to change notification settings - Fork 363
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add CMake build script to the project #209
Conversation
Also add short description into readme
Related discussion wxWidgets/wxWidgets#22393 |
@tamasmeszaros I'm willing to merge this if I can summon you to fix the cmake issues in the future :) Would that work for you? |
Hi @memononen! Thank you, I can handle it for you. |
It would be good to consider the versioning before merging the PR. What concerns me is this line b21ebe0#diff-1e7de1ae2d059d21e1dd75d5812d5a34b0222cef273b7c3a2af62eb747f9d20aR25 Which assumes that this library is at version 1.0 and any matching or newer version is usable as a drop-in. This versioning thing could be omitted but I think it's safer to leave it there and agree on a version now, and maybe even make the compatibility somewhat stricter, (e.g. only matching major versions are compatible). But if you are confident that the library is now finished and will not change much in the future, it's not that big of a deal. |
Good point about versions. With the time i have to maintain this project (which is close to zero), it's quite hard to maintain releases. I'm fine with 1.0, and if that allows us to later differentiate incompatible versions, that is great. |
Great, thanks to all involved! |
@@ -25,6 +25,8 @@ | |||
#ifndef NANOSVGRAST_H | |||
#define NANOSVGRAST_H | |||
|
|||
#include "nanosvg.h" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
With this change, it's no longer possible to include nanosvgrast.h
after including nanosvg.h
as it leads to duplicate symbols:
$ cat << EOF > nanosvg.cc
#include "stdio.h"
#include "string.h"
#include "math.h"
#define NANOSVG_ALL_COLOR_KEYWORDS
#define NANOSVG_IMPLEMENTATION
#include "nanosvg.h"
#define NANOSVGRAST_IMPLEMENTATION
#include "nanosvgrast.h"
EOF
$ g++ nanosvg.cc
In file included from nanosvgrast.h:28,
from nanosvg.cc:8:
nanosvg.h:219:12: error: redefinition of ‘int nsvg__isspace(char)’
219 | static int nsvg__isspace(char c)
| ^~~~~~~~~~~~~
In file included from nanosvg.cc:6:
nanosvg.h:219:12: note: ‘int nsvg__isspace(char)’ previously defined here
219 | static int nsvg__isspace(char c)
| ^~~~~~~~~~~~~
nanosvg.h:224:12: error: redefinition of ‘int nsvg__isdigit(char)’
224 | static int nsvg__isdigit(char c)
| ^~~~~~~~~~~~~
nanosvg.h:224:12: note: ‘int nsvg__isdigit(char)’ previously defined here
224 | static int nsvg__isdigit(char c)
| ^~~~~~~~~~~~~
nanosvg.h:229:26: error: redefinition of ‘float nsvg__minf(float, float)’
229 | static NSVG_INLINE float nsvg__minf(float a, float b) { return a < b ? a : b; }
| ^~~~~~~~~~
nanosvg.h:229:26: note: ‘float nsvg__minf(float, float)’ previously defined here
229 | static NSVG_INLINE float nsvg__minf(float a, float b) { return a < b ? a : b; }
| ^~~~~~~~~~
nanosvg.h:230:26: error: redefinition of ‘float nsvg__maxf(float, float)’
230 | static NSVG_INLINE float nsvg__maxf(float a, float b) { return a > b ? a : b; }
| ^~~~~~~~~~
nanosvg.h:230:26: note: ‘float nsvg__maxf(float, float)’ previously defined here
230 | static NSVG_INLINE float nsvg__maxf(float a, float b) { return a > b ? a : b; }
| ^~~~~~~~~~
...
and dozens more errors.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That include should not be there, my bad reviewing it. @tamasmeszaros would you mind making another PR fixing that?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hello there! I'm sending this PR on behalf of the PrusaSlicer team. We are using nanosvg in our software and having trouble with symbol duplication since wxWidgets also started using this library.
Since both our team and the wxWidgets team is using CMake, I've written the CMake build and install scripts to be able to import the library in both projects without duplication issues.
I've also added a short extension to the readme file to address the new integration method.
I know that this goes somewhat against the philosophy of the library to be simple to integrate and the examples already use a different build system but this is the solution we could provide quickly and believe it would have the most widespread acceptance in the community.