-
Notifications
You must be signed in to change notification settings - Fork 1.4k
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
Added Support for Shared Items Projects #6286
base: main
Are you sure you want to change the base?
Conversation
Thanks for a contribution. I will take a closer look in the next few days. Please add a test with an example project to Also some initial comments inline. |
That can be resolved by re-basing the branch on the latest head. |
Thank you for the feedback, I'll try to implement it this week. |
fb382dd
to
d1d4697
Compare
I had the same issue as my merge, but my oversight was that my initial changes came from the 2.11 release branch, meaning it includes the few commits made for the official release. Still working on adding tests. |
…SolutionDir)/libs. Without this change, the include path will be "/libs", which is not the same as "./libs" or "libs".
…items project file and making the project redirect paths accordingly
006bff3
to
49e9dba
Compare
Thanks for adding the project. This will help understanding things. It is probably sufficient to have only a single configuration in it. That should make things easier to read as well. |
Fixed in 10fb4e5 I also added a (crude) test in d34d14c. Seems to run fine on my machine, but I'm not sure I set it up correctly. I seem to have broken the "changes requested" with my rebase + force push. Sorry! |
Sorry for the late reply. Please fix the CI and I will finally have a proper look. |
…hared items project implementation)
…ed items project files are checked
My apologies, I borked the pipeline with the code removed in a00dd2a. |
It happens. As the CI seems to be happy now, I hope to finish up the review this week. |
At a glance this looks very interesting. Please make the CI happy. 👍 |
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.
nits
@@ -203,7 +203,8 @@ ImportProject::Type ImportProject::import(const std::string &filename, Settings | |||
} | |||
} else if (endsWith(filename, ".vcxproj")) { | |||
std::map<std::string, std::string, cppcheck::stricmp> variables; | |||
if (importVcxproj(filename, variables, emptyString, fileFilters)) { | |||
std::vector<SharedItemsProject> sharedItemsProjects{}; |
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.
I suggest we skip the redundant {}
@@ -698,14 +699,15 @@ static void loadVisualStudioProperties(const std::string &props, std::map<std::s | |||
} | |||
} | |||
|
|||
bool ImportProject::importVcxproj(const std::string &filename, std::map<std::string, std::string, cppcheck::stricmp> &variables, const std::string &additionalIncludeDirectories, const std::vector<std::string> &fileFilters) | |||
bool ImportProject::importVcxproj(const std::string &filename, std::map<std::string, std::string, cppcheck::stricmp> &variables, const std::string &additionalIncludeDirectories, const std::vector<std::string> &fileFilters, std::vector<SharedItemsProject> &cache) |
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.
hmm the name cache is short. I feel like 50/50 if I think the name is fine or not.
} | ||
if (!simplifyPathWithVariables(pathToSharedItemsFile, variables)) { | ||
printError("Could not simplify path to referenced shared items project"); | ||
exit(-1); |
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.
why don't you return false here?
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.
For information I fear that in the GUI this would mean that the whole program would just terminate without any indication to the user.
At work (Areus Gmbh), we use Shared Items Projects in order to deduplicate code. In contrast to conventional project files (
.vcxproj
), the compilation configuration is set by the "includee", which makes the code-reuse of the project more flexible.This pull-request adds support for Shared Items Projects (
.vcxitems
) in Visual studio projects / solutions.The idea is that for each
.vcxproj
, we check for referenced shared items projects. When all the source files and include paths are build, we add the ones defined in the referenced.vcxitems
.The implementation probably isn't 100% robust, but this works for our projects and could serve as a starting point :)
I apologize for the commit history - it's a bit wonky as we currently still use 2.11. I tried to merge the changes to the main branch so other could benefit from these changes as well, but seems like the git history looks a bit weird as a result.