Actually, never mind. bar.h was a new header file, wasn't it? The difference then is that install(DIRECTORY always scans the entire directory structure and copies new stuff in when it appears. Seems odd to add a header file and then not have to build anything before doing another make install... but I guess there might be a real world use case for this?
...but looks like you are right. I retract my statement that cmake does nothing when you add a header file and use install(DIRECTORY. It copies the new file, as you might reasonably expect. And file(GLOB at cmake configure time is not recommended for building or installing files. Sorry for the noise. On Wed, Oct 28, 2009 at 2:32 PM, David Cole <david.c...@kitware.com> wrote: > You are touching an existing header file... > > What happens if you add a new header file that was not there the first time > you ran make install? > > > On Wed, Oct 28, 2009 at 2:26 PM, Tyler Roscoe <ty...@cryptio.net> wrote: > >> On Wed, Oct 28, 2009 at 01:18:55PM -0400, David Cole wrote: >> > Except: that argument is not valid in this case. Neither file(GLOB nor >> > install(DIRECTORY will "rerun" anything if a new header file is added >> into >> > the directory... >> >> David I don't think this is correct. >> >> Here's a test using file(GLOB) + install(FILES): >> >> [tyle...@alta:~/install-dir-vs-file-glob-test/b]$ cat >> ../CMakeLists.txt >> cmake_minimum_required(VERSION 2.6) >> project (test) >> >> set (CMAKE_INSTALL_PREFIX "/tmp/install.test.tmr") >> >> file (GLOB header_files "include/*.h") >> install (FILES ${header_files} DESTINATION include) >> >> [tyle...@alta:~/install-dir-vs-file-glob-test/b]$ cmake .. >> -- Configuring done >> -- Generating done >> -- Build files have been written to: >> /alta/tylermr/install-dir-vs-file-glob-test/b >> >> [tyle...@alta:~/install-dir-vs-file-glob-test/b]$ make install >> Install the project... >> -- Install configuration: "" >> -- Installing: /tmp/install.test.tmr/include/foo.h >> >> [tyle...@alta:~/install-dir-vs-file-glob-test/b]$ touch >> ../include/bar.h >> >> [tyle...@alta:~/install-dir-vs-file-glob-test/b]$ make install >> Install the project... >> -- Install configuration: "" >> -- Up-to-date: /tmp/install.test.tmr/include/foo.h >> >> >> Note that CMake does not notice the addition of bar.h. >> >> >> Here's a test using install(DIRECTORY): >> >> [tyle...@alta:~/install-dir-vs-file-glob-test/b]$ cat >> ../CMakeLists.txt >> cmake_minimum_required(VERSION 2.6) >> project (test) >> >> set (CMAKE_INSTALL_PREFIX "/tmp/install.test.tmr") >> >> install (DIRECTORY include DESTINATION include) >> >> [tyle...@alta:~/install-dir-vs-file-glob-test/b]$ make install >> Install the project... >> -- Install configuration: "" >> -- Installing: /tmp/install.test.tmr/include/include >> -- Installing: /tmp/install.test.tmr/include/include/foo.h >> >> [tyle...@alta:~/install-dir-vs-file-glob-test/b]$ touch >> ../include/bar.h >> >> [tyle...@alta:~/install-dir-vs-file-glob-test/b]$ make install >> Install the project... >> -- Install configuration: "" >> -- Installing: /tmp/install.test.tmr/include/include >> -- Up-to-date: /tmp/install.test.tmr/include/include/foo.h >> -- Installing: /tmp/install.test.tmr/include/include/bar.h >> >> >> Note that bar.h is noticed and installed. >> >> >> tyler >> > >
_______________________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Follow this link to subscribe/unsubscribe: http://www.cmake.org/mailman/listinfo/cmake