title: Building and using Log4cplus with CMake
body: <p>community,</p>
  
  <p>I have the following problem with building and using the Log4cplus library with Embarcadero.
  First, I download the library from <a href="http://sourceforge.net/p/log4cplus/wiki/Home/" rel="nofollow">http://sourceforge.net/p/log4cplus/wiki/Home/</a>, then I navigate to a Directory where I want to build my library, and type cmake -G "Borland Makefiles" mypathtotherootomypreviousdownload. It then says, the build files have been written to the current directory.
  Now I start the MSYS sh.exe and type make. This does also work. I get a bin Folder with various working tests (as exe files) of the library. In this bin folder there is also a dll log4cplusUD.dll. Now I also find in a src folder the corresponding LIB log4cplusUD.lib. 
  I am of course familiar how you can statically link a dynamic library with Embarcadero. But on attempting to compile </p>
  
  <pre><code>#pragma hdrstop
  #pragma argsused
  
  #ifdef _WIN32
  #include &lt;tchar.h&gt;
  #else
    typedef char _TCHAR;
    #define _tmain main
  #endif
  
  #include &lt;stdio.h&gt;
  
  #include "log4cplus/logger.h"
  #include "log4cplus/consoleappender.h"
  #include "log4cplus/loglevel.h"
  #include &lt;log4cplus/loggingmacros.h&gt;
  #include &lt;iomanip&gt;
  
  using namespace std;
  using namespace log4cplus;
  
  
  
   int _tmain(int argc, _TCHAR* argv[]) 
  {
  
      log4cplus::initialize ();
      SharedAppenderPtr append_1(new ConsoleAppender());
      append_1-&gt;setName(LOG4CPLUS_TEXT("First"));
      Logger::getRoot().addAppender(append_1);
  
      Logger root = Logger::getRoot();
      Logger test = Logger::getInstance(LOG4CPLUS_TEXT("test"));
  
      LOG4CPLUS_DEBUG(root,
                      "This is"
                      &lt;&lt; " a reall"
                      &lt;&lt; "y long message." &lt;&lt; endl
                      &lt;&lt; "Just testing it out" &lt;&lt; endl
                      &lt;&lt; "What do you think?");
      test.setLogLevel(NOT_SET_LOG_LEVEL);
      LOG4CPLUS_DEBUG(test, "This is a bool: " &lt;&lt; true);
      LOG4CPLUS_INFO(test, "This is a char: " &lt;&lt; 'x');
      LOG4CPLUS_INFO(test, "This is a short: " &lt;&lt; static_cast&lt;short&gt;(-100));
      LOG4CPLUS_INFO(test, "This is a unsigned short: "
          &lt;&lt; static_cast&lt;unsigned short&gt;(100));
      LOG4CPLUS_INFO(test, "This is a int: " &lt;&lt; 1000);
      LOG4CPLUS_INFO(test, "This is a unsigned int: " &lt;&lt; 1000u);
      LOG4CPLUS_INFO(test, "This is a long(hex): " &lt;&lt; hex &lt;&lt; 100000000l);
      LOG4CPLUS_INFO(test, "This is a unsigned long: " &lt;&lt; 100000000ul);
      LOG4CPLUS_WARN(test, "This is a float: " &lt;&lt; 1.2345f);
      LOG4CPLUS_ERROR(test,
                      "This is a double: "
                      &lt;&lt; setprecision(15)
                      &lt;&lt; 1.2345234234);
      LOG4CPLUS_FATAL(test,
                      "This is a long double: "
                      &lt;&lt; setprecision(15)
                      &lt;&lt; 123452342342.25L);
      LOG4CPLUS_WARN(test, "The following message is empty:");
      LOG4CPLUS_WARN(test, "");
  
      return 0;
  }
  </code></pre>
  
  <p>I get a linker error,
  not resolved external Symbol log4cplus::Logger::getInstance.</p>
  
  <p>The code above is just one of the tests that compiled and run well, when running make from sh.exe.
  So what am I doing wrong?</p>
  
  <p>I also tried to link the above main.cpp againts log4cplusUD.lib with the following CMakeLists.txt file</p>
  
  <pre><code>cmake_minimum_required (VERSION 2.6)
  project (log4cplustest)
  
  include_directories("C:/Users/fin/Software/log4cplus-1.2.0-rc3/log4cplus-1.2.0-rc3/include")
  add_executable(log4cplustest main.cpp)
  target_link_libraries(log4cplustest log4cplusUD)
  </code></pre>
  
  <p>but I get the same Linker error!</p>