title: linker error on Cucumber-cpp when dealing with multiple feature files
body: <p>I've been using the BDD framework <em>Cucumber-cpp</em> for a little while now without much issues, but extending the feature set of a module proved to raise some linker errors.</p>
  
  <p>Setup:</p>
  
  <ul>
  <li>Linux </li>
  <li>Cucumber-cpp</li>
  <li>makefile</li>
  </ul>
  
  <p>If I start with the following:</p>
  
  <pre><code># ./test1.feature
  Feature: test with a single cpp file
  
  Scenario:
      Given I'm a test
      When a trig happens
      Then light should be ON
  </code></pre>
  
  <p>and </p>
  
  <pre><code>// ./step_definitions/f1.cpp
  #include &lt;boost/test/unit_test.hpp&gt;
  #include &lt;cucumber-cpp/defs.hpp&gt;
  
  #include &lt;iostream&gt;
  
  using namespace std;
  
  GIVEN("I'm a test")
  {
      cerr &lt;&lt; "Given..." &lt;&lt; endl;
  }
  
  WHEN("a trig happens")
  {
      cerr &lt;&lt; "Trig!" &lt;&lt; endl;
  }
  
  THEN("light should be on")
  {
      cerr &lt;&lt; "light ON..." &lt;&lt; endl;
  }
  </code></pre>
  
  <p>When I build this with make, it generates the test binary no problem and execution via cucumber works as expected.</p>
  
  <p>But if I add another feature file (which describes another feature to test)</p>
  
  <pre><code># ./test2.feature
  Feature: another set of feature to impl.
  
  Scenario: extra code
      Given I'm another test code
      When a trig happens
      Then light should be OFF
  </code></pre>
  
  <p>with the associated test file,</p>
  
  <pre><code>// ./step_definitions/f2.cpp
  #include &lt;boost/test/unit_test.hpp&gt;
  #include &lt;cucumber-cpp/defs.hpp&gt;
  
  #include &lt;iostream&gt;
  
  using namespace std;
  
  GIVEN("I'm another test")
  {
      cerr &lt;&lt; "Given ANOTHER..." &lt;&lt; endl;
  }
  </code></pre>
  
  <p>compiling those 2 files now give the following linker error:</p>
  
  <pre><code>$  make build
  mkdir -p ./objs
  mkdir -p ./build
  compiling step_definitions/f1.cpp
  gcc -c -g -O0 -DDEBUG -Wall -Werror  -DBOOST_ALL_DYN_LINK  -I/usr/local/include -o objs/f1.o -c step_definitions/f1.cpp
  compiling step_definitions/f2.cpp
  gcc -c -g -O0 -DDEBUG -Wall -Werror  -DBOOST_ALL_DYN_LINK  -I/usr/local/include -o objs/f2.o -c step_definitions/f2.cpp
  building feature-test...
  gcc  -DBOOST_ALL_DYN_LINK  -I/usr/local/include  -L/usr/local/lib -o feature-test objs/f1.o objs/f2.o -lcucumber-cpp -lboost_regex -lboost_system -lboost_thread -lboost_unit_test_framework -lboost_date_time   
  objs/f2.o: In function `toSourceString':
  /usr/local/include/cucumber-cpp/internal/step/StepManager.hpp:161: multiple definition of `CukeObject0::cukeRegId'
  objs/f1.o:/usr/local/include/cucumber-cpp/internal/step/StepManager.hpp:161: first defined here
  objs/f2.o: In function `CukeObject0::body()':
  /home/fred/dev/cuketest/step_definitions/f2.cpp:16: multiple definition of `CukeObject0::body()'
  objs/f1.o:/home/fred/dev/cuketest/step_definitions/f1.cpp:15: first defined here
  collect2: ld returned 1 exit status
  make: *** [build] Error 1
  </code></pre>
  
  <p>Looking at the generated obj files, gives this:</p>
  
  <pre><code>$  nm objs/f2.o | grep "cukeRegId"
  0000000000000395 t _GLOBAL__sub_I__ZN11CukeObject09cukeRegIdE
  0000000000000000 B _ZN11CukeObject09cukeRegIdE
  $  nm objs/f1.o | grep "cukeRegId"
  000000000000069e t _GLOBAL__sub_I__ZN11CukeObject09cukeRegIdE
  0000000000000000 B _ZN11CukeObject09cukeRegIdE
  0000000000000004 B _ZN11CukeObject19cukeRegIdE
  0000000000000008 B _ZN11CukeObject29cukeRegIdE
  </code></pre>
  
  <p>Problem looks like the cukeRegId functions have exactly the same decorated name in the 2 obj files, causing linker error.
  Now, I'm stuck as to how I can prevent this.</p>