[CMake] qt4_wrap_cpp: questions about TARGET option

Stephen Kelly steveire at gmail.com
Tue Jan 14 09:09:35 EST 2014


David Demelier wrote:

> Hello folks,
> 
> I had a question a long time ago about the qt4_wrap_cpp and the
> target_include_directories commands.
> 
> To explain the problem, I wanted to use target_include_directories to
> add include directories to dependent target easier. However I really
> wanted to use qt4_wrap_cpp and not AUTOMOC (just to understand what
> happens under the hood).
> 
> But the problem, is that qt4_wrap_cpp also needs the include
> directories, and to add the include directories you must create a
> target with source files, so you're stuck because you can't add the
> source of qt4_wrap_cpp after.
> 
> So I heard that qt4_wrap_cpp has a TARGET option that specify a target
> even if it does not currently exist. So that solve my problem:
> 
> # a/CMakeLists.txt
> # A library that add a lots of include directories
> add_library(A SHARED foo.cpp)
> target_include_directories(foo PUBLIC a/ b/ c/ d/)
> 
> And now the executable that requires `A' but use qt4_wrap_cpp before.
> 
> # CMakeLists.txt
> qt4_wrap_cpp(output myheader.h TARGET exe)
> add_executable(exe ${output} main.cpp)
> target_link_libraries(exe A)
> 
> Then the qt4_wrap_cpp seems to work and use the include directories
> from A. Is this the correct behavior ?
> 
> If it's correct, I must say that the TARGET option is not shown in the
> qt4_wrap_cpp macro defined in the help message of FindQt4 module.

Yes, we can document that. I've pushed a patch for CMake 3.0.0.

Thanks,

Steve.




More information about the CMake mailing list