<div dir="ltr"><div dir="ltr">On Wed, Aug 25, 2021 at 1:00 AM Abhishek G.S. <<a href="mailto:gsabhishek1ags@gmail.com">gsabhishek1ags@gmail.com</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Thanks for the reply.<br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, 25 Aug 2021 at 10:01, Jed Brown <<a href="mailto:jed@jedbrown.org" target="_blank">jed@jedbrown.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">PETSc does not "wrap" cout.<br></blockquote><div></div><div>    What I meant here is that petsc has a custom output stream through PetscPrintf. I was wondering if that might have affected the stdout and hence the no print. The constructor in the libTest/include/test.h was just supposed to print a string when called in the benchmarks/Test1/main.cpp</div></div></div></blockquote><div><br></div><div>PetscPrintf() just calls printf() underneath.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
Creating a library first, with an executable front-end that most/all initial users will use is generally good design. More users of the library emerge as people try to do more advanced/custom things that are not appropriate to do with the executable.<br></blockquote><div><br></div><div>Ok... This makes sense.  (It would be great if you could point me towards some project whose structure I can borrow.)<br></div><div>Why I did what I did was that if the petsc environment is encapsulated in the library, the rest of the code in the main.cpp would be outside. Since I was writing a code for a very small audience(mostly me) I thought it would be easier to debug if I was inside the petsc environment.</div></div></div></blockquote><div><br></div><div>There are many codes that use PETSc in this way. For example,</div><div><br></div><div>  <a href="https://petsc.org/release/#related-toolkits-libraries-that-use-petsc">https://petsc.org/release/#related-toolkits-libraries-that-use-petsc</a></div><div><br></div><div>  Thanks,</div><div><br></div><div>    Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div> <br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
"Abhishek G.S." <<a href="mailto:gsabhishek1ags@gmail.com" target="_blank">gsabhishek1ags@gmail.com</a>> writes:<br>
<br>
> Hi,<br>
> I am trying to develop a static-library-based app using petsc. The<br>
> structure goes as,<br>
> .<br>
> ├── benchmarks<br>
> │   └── Test1<br>
> │       ├── main.cpp<br>
> │       └── Makefile<br>
> └── libTest<br>
>     ├── build<br>
<br>
Are build products meant to go into this build/ directory, not under lib/ as you have it?<br></blockquote><div><br></div><div>I routed the static library output to the libTest/lib folder in the libTest/CMakeLists.txt.</div><div>The /benchmarks/Test1/Makefile includes this to the ld path<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
>     ├── CMakeLists.txt<br>
>     ├── include<br>
>     │   ├── test.cpp<br>
<br>
cpp files would usually go under src/ or almost anywhere but in include/<br></blockquote><div><br></div><div>noted.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
>     │   └── test.h<br>
>     └── lib<br>
>         └── libTest.a<br>
><br>
> While this code compiles, I am unable to create a minimal working example<br>
> for the same. The aim is to just print "Hello World". Why is it that<br>
> nothing prints?. Is it something to do with the PETSC wrapper for cout?<br>
> Also, I would like to know whether it's a good idea to go ahead with this<br>
> kind of code structure.<br>
><br>
> Thanks for the help.<br>
><br>
> Code: <a href="https://github.com/gsabhishek/PetscStaticLibraryApp.git" rel="noreferrer" target="_blank">https://github.com/gsabhishek/PetscStaticLibraryApp.git</a><br>
><br>
> Thanks for the help<br>
</blockquote></div></div>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>-- Norbert Wiener</div><div><br></div><div><a href="http://www.cse.buffalo.edu/~knepley/" target="_blank">https://www.cse.buffalo.edu/~knepley/</a><br></div></div></div></div></div></div></div></div>