Brad King wrote: > On 07/01/2013 09:17 AM, Stephen Kelly wrote: >> However, a colleage tested it (I have no Mac to hand), and told me that >> if those relevant lines are removed from the Config files, CMake does not >> seem to pass the relevant -F and --framework lines to the compiler, so >> #includes do not work. >> >> Is that a missing feature in CMake that is known, or an unknown bug in a >> case which should work? > > What version of CMake and what generator did he use?
The version is 2.8.11.1 from homebrew, and the generator is the makefile generator. The testcase I asked him to test with is https://qt.gitorious.org/qt/qtbase/blobs/dev/tests/auto/cmake/test_concurrent_module/CMakeLists.txt He removed the includes from the main.cpp and replaced the content with simply { return 0; } to see the link line: ~/Desktop/Bug32134/qtbase-opensource-src-5.1.0- rc2/tests/auto/cmake/test_concurrent_module $ make VERBOSE=1 /usr/local/Cellar/cmake/2.8.11.1/bin/cmake - H/Users/jmt/Desktop/Bug32134/qtbase-opensource-src-5.1.0- rc2/tests/auto/cmake/test_concurrent_module - B/Users/jmt/Desktop/Bug32134/qtbase-opensource-src-5.1.0- rc2/tests/auto/cmake/test_concurrent_module --check-build-system CMakeFiles/Makefile.cmake 0 /usr/local/Cellar/cmake/2.8.11.1/bin/cmake -E cmake_progress_start /Users/jmt/Desktop/Bug32134/qtbase-opensource-src-5.1.0- rc2/tests/auto/cmake/test_concurrent_module/CMakeFiles /Users/jmt/Desktop/Bug32134/qtbase-opensource-src-5.1.0- rc2/tests/auto/cmake/test_concurrent_module/CMakeFiles/progress.marks make -f CMakeFiles/Makefile2 all make -f CMakeFiles/mainapp.dir/build.make CMakeFiles/mainapp.dir/depend cd /Users/jmt/Desktop/Bug32134/qtbase-opensource-src-5.1.0- rc2/tests/auto/cmake/test_concurrent_module && /usr/local/Cellar/cmake/2.8.11.1/bin/cmake -E cmake_depends "Unix Makefiles" /Users/jmt/Desktop/Bug32134/qtbase-opensource-src-5.1.0- rc2/tests/auto/cmake/test_concurrent_module /Users/jmt/Desktop/Bug32134/qtbase-opensource-src-5.1.0- rc2/tests/auto/cmake/test_concurrent_module /Users/jmt/Desktop/Bug32134/qtbase-opensource-src-5.1.0- rc2/tests/auto/cmake/test_concurrent_module /Users/jmt/Desktop/Bug32134/qtbase-opensource-src-5.1.0- rc2/tests/auto/cmake/test_concurrent_module /Users/jmt/Desktop/Bug32134/qtbase-opensource-src-5.1.0- rc2/tests/auto/cmake/test_concurrent_module/CMakeFiles/mainapp.dir/DependInfo.cmake --color= make -f CMakeFiles/mainapp.dir/build.make CMakeFiles/mainapp.dir/build /usr/local/Cellar/cmake/2.8.11.1/bin/cmake -E cmake_progress_report /Users/jmt/Desktop/Bug32134/qtbase-opensource-src-5.1.0- rc2/tests/auto/cmake/test_concurrent_module/CMakeFiles 1 [100%] Building CXX object CMakeFiles/mainapp.dir/main.cpp.o /usr/bin/c++ -DQT_CONCURRENT_LIB -DQT_CORE_LIB - I/Users/jmt/Desktop/Bug32134/dist/mkspecs/macx-clang -o CMakeFiles/mainapp.dir/main.cpp.o -c /Users/jmt/Desktop/Bug32134/qtbase- opensource-src-5.1.0-rc2/tests/auto/cmake/test_concurrent_module/main.cpp Linking CXX executable mainapp /usr/local/Cellar/cmake/2.8.11.1/bin/cmake -E cmake_link_script CMakeFiles/mainapp.dir/link.txt --verbose=1 /usr/bin/c++ -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/mainapp.dir/main.cpp.o -o mainapp /Users/jmt/Desktop/Bug32134/dist/lib/QtConcurrent.framework/QtConcurrent /Users/jmt/Desktop/Bug32134/dist/lib/QtCore.framework/QtCore /usr/local/Cellar/cmake/2.8.11.1/bin/cmake -E cmake_progress_report /Users/jmt/Desktop/Bug32134/qtbase-opensource-src-5.1.0- rc2/tests/auto/cmake/test_concurrent_module/CMakeFiles 1 [100%] Built target mainapp /usr/local/Cellar/cmake/2.8.11.1/bin/cmake -E cmake_progress_start /Users/jmt/Desktop/Bug32134/qtbase-opensource-src-5.1.0- rc2/tests/auto/cmake/test_concurrent_module/CMakeFiles 0 He said it was interesting that full paths to the dynamic libs are used instead of -F and --frameworks entries. That probably relates to how the IMPORTED_LOCATION of the target is populated. The relevant part of the Qt5CoreConfig.cmake is macro(_populate_Core_target_properties Configuration LIB_LOCATION IMPLIB_LOCATION) set_property(TARGET Qt5::Core APPEND PROPERTY IMPORTED_CONFIGURATIONS ${Configuration}) set(imported_location "${_qt5Core_install_prefix}/lib/${LIB_LOCATION}") set_target_properties(Qt5::Core PROPERTIES "IMPORTED_LINK_INTERFACE_LIBRARIES_${Configuration}" "${_Qt5Core_LIB_DEPENDENCIES}" "IMPORTED_LOCATION_${Configuration}" ${imported_location} ) endmacro() add_library(Qt5::Core SHARED IMPORTED) set_property(TARGET Qt5::Core PROPERTY FRAMEWORK 1) _populate_Core_target_properties(RELEASE "QtCore.framework/QtCore" "" ) _populate_Core_target_properties(DEBUG "QtCore.framework/QtCore" "" ) Thanks, Steve. -- 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://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers