Line 148: |
Line 148: |
| == Using the Library in Your Own Program == | | == Using the Library in Your Own Program == |
| | | |
− | === Starting from a Sample Program === | + | === Starting from a Sample Program (Recommended) === |
| [https://github.com/statgen/SampleProgram https://github.com/statgen/SampleProgram] is a simple program demonstrating how to write a tool that uses libStatGen and can be used as a starting point for your tool. | | [https://github.com/statgen/SampleProgram https://github.com/statgen/SampleProgram] is a simple program demonstrating how to write a tool that uses libStatGen and can be used as a starting point for your tool. |
| | | |
Line 175: |
Line 175: |
| # Add your tests to the <code>test</code> directory. | | # Add your tests to the <code>test</code> directory. |
| # Update test/Makefile as appropriate for specifying how to compile/run your tests. | | # Update test/Makefile as appropriate for specifying how to compile/run your tests. |
| + | |
| + | |
| + | After compiling a <code>bin</code> directory is created in the top level directory. Your executable goes in there. If you build for <code>debug</code> and/or <code>profile</code>, subdirectories for those are created under <code>bin/</code> and <code>obj</code>. |
| | | |
| | | |
| === Working from Scratch === | | === Working from Scratch === |
| When compiling your code, be sure to include the library header files found in libStatgen/include/ and link in the appropriate library (opt: libStatGen.a, debug: libStatGen_debug.a, or profile: libStatGen_profile.a). | | When compiling your code, be sure to include the library header files found in libStatgen/include/ and link in the appropriate library (opt: libStatGen.a, debug: libStatGen_debug.a, or profile: libStatGen_profile.a). |
| + | |
| + | |
| + | === Starting from a Sample Set of Tools === |
| + | [https://github.com/statgen/SampleTools https://github.com/statgen/SampleTools] is a repository containing multiple programs within one directory structure. It demonstrates how to have subdirectories for each tool using libStatGen and can be used as a starting point for your set of tools. |
| + | |
| + | SampleTools has 3 subdirectories: |
| + | * copyrights - contains the copyright information, add your own copyrights as necessary |
| + | * SampleProgram1 - a dummy demo program to show the structure for having multiple programs |
| + | * SampleProgram2 - a second dummy demo program to show the structure for having multiple programs |
| + | |
| + | SampleProgram1 & SampleProgram2 have 2 subdirectories: |
| + | * src - this is where your own program code goes |
| + | * test - this is where your test code goes. Test code can be setup to run with <code>make test</code> to ensure the program works properly. |
| + | |
| + | Upon compiling, an <code>obj</code> directory is created under <code>SampleProgram1</code> and <code>SampleProgram2</code> and a <code>bin</code> directory is created at the top level. If you build for <code>debug</code> and/or <code>profile</code>, subdirectories for those are created under <code>bin/</code> and <code>SampleProgram1(2)/obj</code>. |
| + | |
| + | |
| + | '''Using SampleTools as a starting point for your set of tools:''' |
| + | # Copy <code>SampleTools</code> into a directory with your toolset name (it is the starting point for your own set of tools). |
| + | # Update <code>ChangeLog</code>, <code>.gitignore</code>, and <code>README.txt</code> as appropriate. |
| + | # Add any necessary copyrights to the copyrights directory. |
| + | # Rename the <code>SampleProgram1</code> and <code>SampleProgram2</code> directories |
| + | # Create any additional directories as necessary. |
| + | #* Recursively copy the structure/Makefiles from <code>SampleProgram1</code>. |
| + | # Update <code>SUBDIRS</code> in <code>Makefile</code> as necessary. |
| + | # Update <code>Makefile.inc</code> |
| + | ## Update the <code>VERSION</code> as necessary. |
| + | ## Replace all occurrences of <code>SAMPLE_PROGRAM</code> with an all caps name for your toolset. |
| + | ##* You can then use the <code>LIB_PATH_<your toolset name></code> environment variable to specify an alternate path to libStatGen specific for your program. In most cases you will not need to do this. |
| + | #* No other updates to <code>Makefile.inc</code> should be necessary. |
| + | # For each Program you want to add: |
| + | ## Move into the appropriate subdirectory. |
| + | ##* No change should be made to the program's <code>Makefile</code> |
| + | ## Add your program (cpp & h files) to the <code>src</code> subdirectory. |
| + | ## Update src/Makefile |
| + | ### Set EXE to your program executable (replacing sampleProgram) |
| + | ### Set TOOLBASE, SRCONLY, and HDRONLY as appropriate for specifying your program file names. |
| + | ### Set any of the other optional settings as specified in the sample makefile. |
| + | ##* No other changes should be necessary to src/Makefile. |
| + | ## Add your tests to the <code>test</code> directory. |
| + | ## Update test/Makefile as appropriate for specifying how to compile/run your tests. |
| | | |
| | | |
| = Troubleshooting = | | = Troubleshooting = |
| If you are having trouble compiling any of the versions, check [[libStatGen Troubleshooting]] for help. If that does not solve your problem, email me for support. | | If you are having trouble compiling any of the versions, check [[libStatGen Troubleshooting]] for help. If that does not solve your problem, email me for support. |