[CMake] add_library without source code

Matthias Goesswein tisi at sbox.tugraz.at
Wed Jul 28 03:32:52 EDT 2010


Am 27.07.2010 20:01, schrieb Alexander Neundorf:
> On Tuesday 27 July 2010, Matthias Gwein wrote:
>> Hello!
>>
>> I'm using cmake 2.8.2 and I'd like to build a library of libraries and
>> i have no additional source code.
>> I tried something like that:
>>
>> add_library(mylib )
>> target_link_libraries(mylib lib1 lib2)
>>
>> But that doesn't work, because add_library needs at least a source file.
>>
>> Is there any way to get that work, without creating a dummy source file?
>
> AFAIK no.
> If you want, you can create that dummy file e.g. with file(WRITE ...), so it
> doesn't have to go into version control.
>
> lib1 and lib2 are shared libs, right ?
>
> Alex

No they are static libraries. I recognized that i have the same problem 
with add_executable, there is also at least one source file necessary 
and i don't like to make dummy files for nothing.

But maybe the configuration of my build is unusual for CMake. I've 
configured them like in my old Make Projects:

I organize different software modules in subdirectories, so i have e.g.

/modul1/modul1.c
/modul1/CMakelists.txt
/modul2/modul2.c
/modul2/CMakelists.txt
/CMakelists.txt

The CMakelists is in the project root directory and adds the 
subdirectories (there are also CMakeLists.txt in the subdirectories)

In the Subdirectories, I make libraries (e.g. add_library(modul1 
modul1.c)), and in the root directory i'd like to link all libraries to 
a big library or to a executable. I tried to use add_library only with 
the library name and too use target_link_libraries to add the libraries 
of the su-modules, which didn't work.
I don't like to have source files in the root directory, so i don't have 
source files for the commands add_library or add_executable in the root 
CMakeLists.txt file.

How is somethiong like that usually done with CMake?

Matthias.




More information about the CMake mailing list