[CMake] Fwd: building libs and specifying addition folders

Dev Guy devguy.ca at gmail.com
Thu Jan 19 02:15:07 EST 2012


On Thu, Jan 19, 2012 at 1:01 AM, John Drescher <drescherjm at gmail.com> wrote:
> ---------- Forwarded message ----------
> From: John Drescher <drescherjm at gmail.com>
> Date: Thu, Jan 19, 2012 at 1:00 AM
> Subject: Re: [CMake] building libs and specifying addition folders
> To: Dev Guy <devguy.ca at gmail.com>
>
>
> On Wed, Jan 18, 2012 at 10:57 PM, Dev Guy <devguy.ca at gmail.com> wrote:
>> Hi,
>>
>> I am relatively new to CMake and I've read the tutorial. However I
>> have a few questions.
>>
>> 1. How can I declare a CMakeLists file to create a project to build a
>> DLL or static lib ? I assume if I build a DLL on windows, it will
>> build as a shared lib on Linux
>
> put SHARED in the add_library statement
>
> For more info than that type the following from a command prompt or shell:
>
> cmake --help-command add_library
>
>>
>> 2. If my main source folder has 2 sub-folders, one that only includes
>> header files call is Include and another folder that contains source
>> files call it Utils. How do I add declare them to my CMakeLists files
>> so that both the header and addition source files are found and and
>> compiled in the main source folder to build the final binary.
>>
>
> add_subdirectory
>
> Again for help:
> cmake --help-command add_subdirectory
>
>
> John
>
>
> --
> John M. Drescher
> --

John thanks,

I was able to get a DLL built, now I have a program that want to link
against the lib and use the DLL.

What I've done is create a Lib folder under the source folder wanting
to use the lib, I copied over the lib find and header file. I added
the following to CMakeLists.txt

add_subdirectory(Lib)


target_link_libraries (SimpleTester UnitTest)

However I am seeing 2 errors:

Error 1, when I run CMake I see:

CMake Warning (dev) at CMakeLists.txt:6 (add_subdirectory):
  The source directory

    C:/dev/Project/UnitTestSample/Lib

  does not contain a CMakeLists.txt file.

  CMake does not support this case but it used to work accidentally and is
  being allowed for compatibility.

  Policy CMP0014 is not set: Input directories must have CMakeLists.txt.  Run
  "cmake --help-policy CMP0014" for policy details.  Use the cmake_policy
  command to set the policy and suppress this warning.
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Configuring done
-- Generating done
-- Build files have been written to: C:/dev/Project/UnitTestSample/build

======================

Error 2

When I build I get a link error, which I fix by copying over the lib
file into the build folder. How can I tell the linker from CMake where
to find the lib?

LINK : fatal error LNK1104: cannot open file 'UnitTest.lib'
LINK Pass 1 failed. with 2
NMAKE : fatal error U1077: '"C:\Program Files\CMake
2.8\bin\cmake.exe"' : return code '0xffffffff'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio
10.0\VC\BIN\nmake.exe"' : retu
rn code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio
10.0\VC\BIN\nmake.exe"' : retu
rn code '0x2'
Stop.


More information about the CMake mailing list