<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">

<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Specifying the location of the run configuration</title>
<link rel="stylesheet" type="text/css" href="../help.css">
</head>

<body>

<div role="main"><h1>Specifying the location of the run configuration</h1>

<p>When you create a run configuration, it is saved with the extension <samp>.launch</samp> in <samp>org.eclipse.debug.core</samp>. 
You can specify an alternate location in which to store your run configuration. You can 
also specify how you access it and what 
perspective to open when running an application.</p>
<p>To specify the location of a run configuration:</p>

<ol>
  <li>In  the C/C++ Projects view, select a project.</li>
  <li>Click <strong>Run &gt; Run</strong> or <strong>Run &gt; Debug</strong>.</li>
  <li>In the <strong>Configurations</strong> box, expand <strong>C/C++ Local</strong>.</li>    
  <li>Click the <strong>Common</strong> tab.<br>
  	  <img src="../images/run_common.png"  alt="Run Common window">
  </li>
  <li>To save <samp> .launch</samp> to a project in your workspace, and to be able 
  to commit it to CVS, click <strong>Shared</strong>.</li>
  <li>In the <strong>Folder Selection</strong> window, select a project, and click <strong>OK</strong>.<br>
  	  <img src="../images/run_common_folder.png"  alt="Run Common Folder Selection window">
  </li>
    <li>To specify which perspective opens when you run, select a perspective 
    from the <strong>Run mode</strong> list.</li>
    <li>To specify which perspective opens when you run, select a perspective 
    from the <strong>Debug mode</strong> list.</li>  
  <li>Click <strong>Run</strong>, or do the following, as required:<ul><li>To set the environment variables 
    and values to use when an application runs, see <a href="cdt_t_run_env.htm">
    Setting environment variables</a>.</li>
  <li>To select a debugger to use when debugging an application, see
  <a href="cdt_t_run_dbg.htm">Defining debug settings</a>.</li>
  <li>To specify the location of source files used when debugging a C or C++ 
  application, see <a href="cdt_t_run_source.htm">Specifying the location of 
  source files</a>.</li>
  <li>To specify where the run configuration is stored, how you access it, and 
  the perspective to open when running an application, see
  <a href="cdt_t_run_config.htm">Selecting a run/debug configuration</a>.</li></ul>
    
  </ol>

<p><img src="../images/ngconcepts.gif" ALT="Related concepts" width="143" height="21">
<br>
<a href="../concepts/cdt_c_projects.htm">CDT Projects</a><br>
<a href="../concepts/cdt_c_proj_file_views.htm">Project file views</a></p>
<p><img src="../images/ngtasks.gif" ALT="Related tasks" width="143" height="21">
<br>
<a href="cdt_o_run_config.htm">Creating or editing a run configuration</a></p>
<p><img src="../images/ngref.gif" ALT="Related reference" width="143" height="21">
<br>
<a href="../reference/cdt_o_run_dbg_pages.htm">Run and Debug dialog box</a></p>
<img src="../images/ng00_04a.gif" ALT="IBM Copyright Statement" >

</div></body>

</html>