Skip to content
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

move templates to cpp file to reduce Seqan exposure #5516

Merged
merged 3 commits into from
Nov 25, 2021

Conversation

timosachsenberg
Copy link
Contributor

@timosachsenberg timosachsenberg commented Sep 3, 2021

Description

Attempt to remove compile time and reduce exposure of seqan

Checklist:

  • Make sure that you are listed in the AUTHORS file
  • Add relevant changes and new features to the CHANGELOG file
  • I have commented my code, particularly in hard-to-understand areas
  • New and existing unit tests pass locally with my changes
  • Updated or added python bindings for changed or new classes. (Tick if no updates were necessary.)

How can I get additional information on failed tests during CI:

If your PR is failing you can check out

Note:

  • Once you opened a PR try to minimize the number of pushes to it as every push will trigger CI (automated builds and test) and is rather heavy on our infrastructure (e.g., if several pushes per day are performed).

@timosachsenberg
Copy link
Contributor Author

timosachsenberg commented Sep 4, 2021

Seems it doesn’t fly on all compilers @cbielow any insights?

@hroest
Copy link
Contributor

hroest commented Oct 18, 2021

I looked into this some time ago in order to reduce compilation time for pyOpenMS, there are quite some areas where we pull in stuff into the header files that we probably shouldnt. Here is an (incomplete) start: hroest@5c6348a also QString pulls in about 150k LOC from Qt...

@cbielow
Copy link
Contributor

cbielow commented Nov 25, 2021

Seems it doesn’t fly on all compilers @cbielow any insights?

I guess you have to add OPENMS_DLLAPI to the function template, because otherwise the templates instanciated in the cpp won't be exported...
just a wild guess though...

@timosachsenberg
Copy link
Contributor Author

will try to play around with the export
right now I get a

ProteomicsLFQ.obj : error LNK2019: unresolved external symbol "public: enum OpenMS::PeptideIndexing::ExitCodes __cdecl OpenMS::PeptideIndexing::run<struct OpenMS::TFI_File>(class OpenMS::FASTAContainer<struct OpenMS::TFI_File> &,class std::vector<class OpenMS::ProteinIdentification,class std::allocator<class OpenMS::ProteinIdentification> > &,class std::vector<class OpenMS::PeptideIdentification,class std::allocator<class OpenMS::PeptideIdentification> > &)" (??$run@UTFI_File@OpenMS@@@PeptideIndexing@OpenMS@@QEAA?AW4ExitCodes@01@AEAV?$FASTAContainer@UTFI_File@OpenMS@@@1@AEAV?$vector@VProteinIdentification@OpenMS@@V?$allocator@VProteinIdentification@OpenMS@@@std@@@std@@AEAV?$vector@VPeptideIdentification@OpenMS@@V?$allocator@VPeptideIdentification@OpenMS@@@std@@@5@@Z) referenced in function "protected: enum OpenMS::TOPPBase::ExitCodes __cdecl ProteomicsLFQ::inferProteinGroups_(class std::vector<class OpenMS::String,class std::allocator<class OpenMS::String> >,class OpenMS::String const &,class std::map<class OpenMS::String,class OpenMS::String,struct std::less<class OpenMS::String>,class std::allocator<struct std::pair<class OpenMS::String const ,class OpenMS::String> > > const &,class std::set<class OpenMS::String,struct std::less<class OpenMS::String>,class std::allocator<class OpenMS::String> > const &,class std::vector<class OpenMS::ProteinIdentification,class std::allocator<class OpenMS::ProteinIdentification> > &,class std::vector<class OpenMS::PeptideIdentification,class std::allocator<class OpenMS::PeptideIdentification> > &)" (?inferProteinGroups_@ProteomicsLFQ@@IEAA?AW4ExitCodes@TOPPBase@OpenMS@@V?$vector@VString@OpenMS@@V?$allocator@VString@OpenMS@@@std@@@std@@AEBVString@4@AEBV?$map@VString@OpenMS@@V12@U?$less@VString@OpenMS@@@std@@V?$allocator@U?$pair@$$CBVString@OpenMS@@V12@@std@@@4@@6@AEBV?$set@VString@OpenMS@@U?$less@VString@OpenMS@@@std@@V?$allocator@VString@OpenMS@@@4@@6@AEAV?$vector@VProteinIdentification@OpenMS@@V?$allocator@VProteinIdentification@OpenMS@@@std@@@6@AEAV?$vector@VPeptideIdentification@OpenMS@@V?$allocator@VPeptideIdentification@OpenMS@@@std@@@6@@Z) [E:\jenkins\ws\openms\PR\bldtst\9447518b\build\src\utils\ProteomicsLFQ.vcxproj]

@timosachsenberg
Copy link
Contributor Author

@cbielow thanks for the hint with adding the DLL export

@timosachsenberg timosachsenberg merged commit 3b6c0ee into develop Nov 25, 2021
@timosachsenberg timosachsenberg deleted the refactor/move_template_to_cpp branch November 25, 2021 14:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants