[CMake] Fwd: building libs and specifying addition folders

Michael Hertling mhertling at online.de
Fri Jan 20 18:50:30 EST 2012


On 01/19/2012 08:15 AM, Dev Guy wrote:
> 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.

Could you provide a small but self-sufficient exemplary project which
demonstrates what you're doing and allows for further investigation?

Regards,

Michael


More information about the CMake mailing list