[CMake] Main program not getting rebuilt when library changes.

Bill Greene w.h.greene at gmail.com
Thu Oct 2 19:57:43 EDT 2014


I replaced the CMakeLists.txt for the library (cmTestLib) with simply this:

add_library (cmTestLib STATIC MySub.cpp MySub.h)

And I see exactly the same problem with the main program not getting
rebuilt.
So I believe the GLOB issue is irrelevant to this particular problem.

Bill

On Thu, Oct 2, 2014 at 6:55 PM, Michael Jackson <mike.jackson at bluequartz.net
> wrote:

> This probably is not completely your issue but I am sure it has something
> to do with it. From the help for the "FILE" command:
>
> GLOB will generate a list of all files that match the globbing
> expressions and store it into the variable.  Globbing expressions are
> similar to regular expressions, but much simpler.  If RELATIVE flag is
> specified for an expression, the results will be returned as a
> relative path to the given path.  (We do not recommend using GLOB to
> collect a list of source files from your source tree.  If no
> CMakeLists.txt file changes when a source is added or removed then the
> generated build system cannot know when to ask CMake to regenerate.)
>
> Take away: Do NOT use GLOB to find source files. List them out one by one
> in the CMake file.
>
> Try that and let us know if it works as you would expect it to.
>
> Mike Jackson
>
> _________________________________________________________
> Mike Jackson                  mike.jackson at bluequartz.net
> BlueQuartz Software                    www.bluequartz.net
> Principal Software Engineer                  Dayton, Ohio
>
> On Thu, Oct 2, 2014 at 3:38 PM, Bill Greene <w.h.greene at gmail.com> wrote:
>
>> Hi,
>>
>> I'm trying to build a trivial project with cmake 3.0 and Visual Studio
>> 2013.
>> The project has a top-level directory, a sub-directory with the main
>> program,
>> and a sub-directory that builds a static library that the main program
>> depends on.
>> It all builds fine the first time. Then I change a routine in the library
>> and rebuild.
>> The static library gets rebuilt but the main program does not get
>> re-linked.
>>
>> I have perused the cmake-built VS project for hours and it looks fine to
>> me; the
>> main program depends on the library as expected. I can't figure out why
>> the main
>> program is not being rebuilt.
>>
>> More embarrassing, I can easily build a similar VS project by hand that
>> behaves as
>> expected but I can' find the significant difference between the two that
>> is causing the
>> problematic behavior.
>>
>> If anyone has any insights on this I would be very appreciative.
>>
>> Here are my three CMakeLists.txt files:
>>
>> top level:
>> -----------
>> cmake_minimum_required (VERSION 2.8)
>> project(cmTest)
>> add_subdirectory (cmTestMain)
>> add_subdirectory (cmTestLib)
>>
>> cmTestLib
>> --------------
>> FILE(GLOB SRC *.cpp)
>> FILE(GLOB H_FILES *.h)
>> add_library (cmTestLib STATIC ${SRC} ${H_FILES})
>>
>> cmTestMain
>> ----------------
>> include_directories (${cmTest_SOURCE_DIR}/cmTestLib)
>> add_executable (cmTestMain cmTestMain.cpp)
>> target_link_libraries (cmTestMain cmTestLib)
>>
>> Thanks.
>>
>> Bill
>>
>> --
>>
>> Powered by www.kitware.com
>>
>> Please keep messages on-topic and check the CMake FAQ at:
>> http://www.cmake.org/Wiki/CMake_FAQ
>>
>> Kitware offers various services to support the CMake community. For more
>> information on each offering, please visit:
>>
>> CMake Support: http://cmake.org/cmake/help/support.html
>> CMake Consulting: http://cmake.org/cmake/help/consulting.html
>> CMake Training Courses: http://cmake.org/cmake/help/training.html
>>
>> Visit other Kitware open-source projects at
>> http://www.kitware.com/opensource/opensource.html
>>
>> Follow this link to subscribe/unsubscribe:
>> http://public.kitware.com/mailman/listinfo/cmake
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake/attachments/20141002/916bef2b/attachment.html>


More information about the CMake mailing list