| Summary: | CMake doesn't follow ADD_SUBDIRECTORY macro and compile dependencies first. | ||
|---|---|---|---|
| Product: | unknown | Reporter: | Gajendra Kashyap <gajendrakashyap> |
| Component: | general | Assignee: | Unassigned bugs <unassigned-bugs-null> |
| Status: | RESOLVED UPSTREAM | ||
| Severity: | normal | ||
| Priority: | NOR | ||
| Version First Reported In: | unspecified | ||
| Target Milestone: | --- | ||
| Platform: | openSUSE | ||
| OS: | Linux | ||
| Latest Commit: | Version Fixed/Implemented In: | ||
| Sentry Crash Report: | |||
Sorry, but we do not develop the CMake build system. Please report your problem to the CMake bug tracking system, see http://www.cmake.org |
Version: 2.4, 2.6.3 (using KDE 3.5.10) Compiler: GNU GCC 4.1.2 Problem is independent of compiler version OS: Linux Installed from: SuSE RPMs I'm using CMake on Suse 10.1 and 11.1 to build two projects: 1. QT4 applications 2. ACE+TAO application In both the cases the common thing is that some files are generated at run time. 1. QT: ui_xyz.h, moc_xyz.cxx 2. ACE+TAO: *_S.h,*_S.i, *_S.cpp, *_C.h, *_C.i, *_C.cpp etc. Qt Problem: Create a simple application with a main window and a separate dialog box. Do the gui design with Qt designer to get a ui file. This is important because in absence of multiple ui.h the problem is not observed. Write the main window code such that the dialog (created with Qt designer) opens on clicking a button or menu. The directory structure is Project --- Main.cpp and CMakeLists.txt | ---- MainWindow ---> CMakeLists.txt and Sources + MainWindow ui file | ---- Dialog ---> CMakeLists.txt and Sources + Simple dialog ui file Now write a CMake for Qt4 such that MainWindow and Dialog create their own libs which are linked to exe in the main CMakeLists.txt. In this project without the use of ADD_DEPENDENCIES (mainwindow dialog) in the CMake of MainWindow the Dialog sources are not compiled to create a Dialog lib. The build fails. The CMake appears to jump the ADD_SUBDIRECTORY and go to the MainWindow without compiling the dependency Dialog. ACE+TAO IDL problem: A behavior similar with Qt is observed here also. CMake appears to disobey the ADD_SUBDIRECTORY command and jumps to some other place. For server and client implementation we need the IDL generated sources, which CMake fails to generate at runtime. Somehow I got it working using ADD_DEPENDENCIES. Note that this behavior of CMake system is observed when some sources are generated at runtime and there is a dependency on them as described above. I don't thinkthat every time we should resolve to using ADD_DEPENDENCIES for a forceful build. I expect that CMake should follow the compilation order as listed by ADD_SUBDIRECTORY and not miss the dependency compilation. Thanks