[CMake] add_custom_command: regenerate all on modifcation?
    Dave Milter 
    davemilter at gmail.com
       
    Fri May 30 04:50:21 EDT 2008
    
    
  
The problem become arris on big project.
It used qt, and when I add new file, it regenerate all stuff,
like moc files, ui_*.h files and so on,
this lead to rebuild corresponding C++ files,
and this is too long for me, and I also do not see, why
this should be so?
So I create smple test project to show the problem:
-------------------------------------------------------------------
PROJECT(test_rebuild)
ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/new_func.hpp
	COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/generate_new_func.sh >
${CMAKE_CURRENT_BINARY_DIR}/new_func.hpp
#	MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/generate_new_func.sh
	DEPENDS  ${CMAKE_CURRENT_SOURCE_DIR}/generate_new_func.sh
)
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
SET(tr_SRCS
#	test.cpp
	foo.cpp
	main.cpp
)
SET(tr_HDRS
#	test.hpp
	foo.hpp
	${CMAKE_CURRENT_BINARY_DIR}/new_func.hpp
)
ADD_EXECUTABLE(test_rebuild
	${tr_SRCS}
	${tr_HDRS}
)
-------------------------------------------------------------------
There is file new_func.hpp generated by generate_new_func.sh script,
there is foo.cpp which depends on new_func.hpp.
test.cpp and test.hpp do not depend on any other files.
But every time when I comment test.cpp test.hpp or uncomment
new_func.hpp regenerated and foo.cpp rebuild happened.
is it possible to fix this behaviour?
I use make file generatation.
>cmake --version
cmake version 2.7-20080530
> cat test.cpp
#include <cstdio>
#include "test.hpp"
void test_func()
{
	printf("%s: begin\n", __func__);
}
>cat foo.cpp
#include <cstdio>
#include "new_func.hpp"
#include "foo.hpp"
Foo::Foo()
{
	printf("%s: begin\n", __func__);
	new_func();
}
>cat build/new_func.hpp
#include <cstdio>
void new_func() { printf("aaa\n"); }
    
    
More information about the CMake
mailing list