Differences between revisions 2 and 184 (spanning 182 versions)
Revision 2 as of 2004-08-02 05:50:05
Size: 986
Editor: DavidTuch
Comment: Added index.
Revision 184 as of 2019-02-03 13:18:17
Size: 1693
Editor: AndrewHoopes
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
#pragma section-numbers on #acl LcnGroup:read,write,delete,revert All:read
Line 3: Line 3:
= Index = = FreeSurfer Dev Guide =
Line 5: Line 5:
[[Navigation(children)]]
[[TableOfContents]]
 * Visit the BuildGuide for instructions on building and installing freesurfer manually.
 * Visit the GitHub page for an introduction to the github workflow.
 * Visit the GitAnnex page for detailed instructions on using git annex.
Line 8: Line 9:
== Adding a New C Program ==
Line 9: Line 11:
= CVS Checkout = If you'd like to add a new program to the tree, you should create a new subdirectory with the title of your tool. As an example, let's create a new c++ program called `mri_process`. First, we'll create a top-level subdirectory that contains our new c++ file and an empty `CMakeLists.txt` file:
Line 11: Line 13:
There are several ways to do: pserver, ext, kserver, gserver. See, e.g. Chapter 2 of [http://cvsbook.red-bean.com/cvsbook.html Open Source Development with CVS] by K. Fogel and M. Bar (2nd Edition, Coriolis Group, 2001). {{{
freesurfer/
    mri_process/
        CMakeLists.txt
        mri_process.cpp
}}}
Line 13: Line 20:
'''pserver''' In order to configure our new code, we should add the following to the empty `CMakeLists.txt` file.
Line 15: Line 22:
`cvs -d :pserver:tosa@cvs.foobar.com:/space/repo/1/dev login` {{{
project(mri_process)
Line 17: Line 25:
where username is "`tosa`" on the server "`cvs.foobar.com`". The cvs depository is `/space/repo/1/dev`. You get asked about the password. Once you stored your authentication in `.cvspass` file, you can run other CVS commands using a similar way. include_directories(${FS_INCLUDE_DIRS})
Line 19: Line 27:
`cvs -d :pserver:tosa@cvs.foobar.com:/space/repo/1/dev co dev` add_executable(mri_process mri_process.cpp)
target_link_libraries(mri_process utils)
Line 21: Line 30:
which checkout the entire directory `dev` into the current directory. install(TARGETS mri_process DESTINATION bin)
}}}
Line 23: Line 33:
'''ext'''

`export CVS_RSH=ssh` [[BR]]
`cvs -d :ext:tosa@cvs.foobar.com:/space/repo/1/dev co dev`

Note that even though CVS_RSH, we use `ssh`, which is a secure shell
This will compile `mri_process.cpp`, link it against the `utils` freesurfer library, and copy the executable to the `$FREESURFER_HOME/bin` directory during install. To include this subdirectory in the main freesurfer build, make sure to modify the top-level `CMakeLists.txt` by adding `mri_process` to the long list of included directories at the bottom of the file. Now, after reconfiguring your build, you can run `make` in the `mri_process` directory of your build tree to successfully compile the new program. If you're having trouble configuring and building freesurfer, be sure to visit the BuildGuide for step-by-step instructions.

FreeSurfer Dev Guide

  • Visit the BuildGuide for instructions on building and installing freesurfer manually.

  • Visit the GitHub page for an introduction to the github workflow.

  • Visit the GitAnnex page for detailed instructions on using git annex.

Adding a New C Program

If you'd like to add a new program to the tree, you should create a new subdirectory with the title of your tool. As an example, let's create a new c++ program called mri_process. First, we'll create a top-level subdirectory that contains our new c++ file and an empty CMakeLists.txt file:

freesurfer/
    mri_process/
        CMakeLists.txt
        mri_process.cpp

In order to configure our new code, we should add the following to the empty CMakeLists.txt file.

project(mri_process)

include_directories(${FS_INCLUDE_DIRS})

add_executable(mri_process mri_process.cpp)
target_link_libraries(mri_process utils)

install(TARGETS mri_process DESTINATION bin)

This will compile mri_process.cpp, link it against the utils freesurfer library, and copy the executable to the $FREESURFER_HOME/bin directory during install. To include this subdirectory in the main freesurfer build, make sure to modify the top-level CMakeLists.txt by adding mri_process to the long list of included directories at the bottom of the file. Now, after reconfiguring your build, you can run make in the mri_process directory of your build tree to successfully compile the new program. If you're having trouble configuring and building freesurfer, be sure to visit the BuildGuide for step-by-step instructions.

DevelopersGuide (last edited 2023-09-13 15:46:41 by JacksonNolan)