Re: [cmake-developers] CMake 2.8.11-rc3 ready for testing!
May I ask one question related to the Target Usage Requirements ... For HDF5 (for example), the user might enable Parallel IO, which requires MPI. When enabled, the hdf5 cmakelists use find_package to get MPI and all is fine. Users of hdf5 might not know that they are using an hdf which has parallel IO enabled, and compilation is complicated by the unexpected dependency on mpi libs and includes Is this new feature designed to resolve this long standing irritation so that when installed, the hdf5 will add the mpi dependency behind the scenes? If so, I am delighted and would like to test it out on the hdf5 distribution. If there is a link to an example I can copy from, please say. Thanks JB -Original Message- From: cmake-developers-boun...@cmake.org [mailto:cmake-developers-boun...@cmake.org] On Behalf Of Robert Maynard Sent: 19 April 2013 15:24 To: cmake-developers@cmake.org Subject: [cmake-developers] CMake 2.8.11-rc3 ready for testing! The CMake 2.8.11 release candidate continues. This is the last RC unless a critical, must-fix issue is found. You can find the source and binaries here: http://www.cmake.org/files/v2.8/?C=M;O=D Some of the notable changes in this release are: - Introduced Target Usage Requirements - Targets can specify usage requirements for their consumers such as include directories and preprocessor definitions; previously only link dependencies were supported - target_link_libraries(myexe yourlib) can now build myexe sources with requirements specified by yourlib - Added target_include_directories and target_compile_definitions commands with PUBLIC/PRIVATE/INTERFACE options - See design and development discussion at http://community.kde.org/Frameworks/Epics/CMake_target_usage_requirements - Introduced a Generator Toolset selection for VS = 10 and Xcode = 3 - Tell the IDEs which compiler toolchain to use - ex. Use VS 9 tools under VS 10: -G Visual Studio 10 -T v90 - Introduced ExternalData Module - Keep source trees lightweight by storing data separately - Reference data unambiguously from source tree by content hash - Fetch on-demand during build from local or remote resources - CMake: Sublime Text Generator added that supports both Make and Ninja - CMake: Added support for Texas Instruments C6 and up compilers - CMake: Improve OpenBSD support - CMake: Support for Windows CE with VS 8 and 9 generators - CPack: Added Support for 64bit NSIS - CPack: Added WiX Package Generator - ExternalProject: Will run git fetch less often - FindBoost: Major overhaul of searching and result caching - FindCUDA: Now has support for separable compilation - FindQt4: Overall improvements to finding Qt and importing targets - FindSquish: Added support for squish 4 - GetPrerequisites: Port to MinGW with objdump The bug tracker change log page for this version is at: http://public.kitware.com/Bug/changelog_page.php?version_id=103 Following is the complete list of changes in this rc since the previous rc. Please try this version of CMake on your projects and report any issues to the list or the bug tracker. This release candidate will become the final release for 2.8.11 unless a serious issue is reported. Changes in CMake 2.8.11-rc3 (since 2.8.11-rc2) -- Brad King (1): get_filename_component: Document path components more clearly (#14091) Rolf Eike Beer (1): try_compile: add missing fclose() to recently added error case Stephen Kelly (1): Fix clearing of the INCLUDE_DIRECTORIES DIRECTORY property. -- 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 -- 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
Re: [cmake-developers] CMake 2.8.11-rc3 ready for testing!
One important extra point. The MPI library was NOT built with cmake, but the HDF5 and the user's project would be. Not sure if that makes a difference JB From: Biddiscombe, John A. Sent: 22 April 2013 16:46 To: 'Stephen Kelly'; cmake-developers@cmake.org Subject: RE: [cmake-developers] CMake 2.8.11-rc3 ready for testing! Sorry, I assumed too much familiarity with hdf5/mpi Hdf5 has CMakelists.txt files and declares a number of targets. When built with parallel IO, hdf5 used find_package(MPI) to get the required libs and includes for the library to compile and link nicely with mpi. No problem When you do a make install on hdf5, it creates a set of very nice cmake files C:\Program Files\hdf5-1.8.11\cmake\hdf5\hdf5-targets.cmake C:\Program Files\hdf5-1.8.11\cmake\hdf5\hdf5-targets-debug.cmake C:\Program Files\hdf5-1.8.11\cmake\hdf5\hdf5-targets-release.cmake C:\Program Files\hdf5-1.8.11\cmake\hdf5\hdf5-config.cmake C:\Program Files\hdf5-1.8.11\cmake\hdf5\hdf5-config-version.cmake Which declare imported targets for debug and release and do everything right. Except that if the user picks up HDF5 using the syntax find_package(HDF5 NO_MODULE) i.e. NOT using the findhdf5 (because we want to pick up the cmake config) then the user's project has a 'hidden' dependency on mpi includes and libs and unless they add a find_package(mpi) to their project - and add the necessary include dirs. And links - theit build will fail What I'd like to di, is in the target import declared by hdf5, add in this transitive link dependency to m pi. In the past I was advised not to do this, but my hope is that this can be expressed nicely with the new syntax Yes? JB -Original Message- From: cmake-developers-boun...@cmake.orgmailto:cmake-developers-boun...@cmake.org [mailto:cmake-developers-boun...@cmake.org] On Behalf Of Stephen Kelly Sent: 22 April 2013 16:35 To: cmake-developers@cmake.orgmailto:cmake-developers@cmake.org Subject: Re: [cmake-developers] CMake 2.8.11-rc3 ready for testing! Biddiscombe, John A. wrote: May I ask one question related to the Target Usage Requirements ... For HDF5 (for example), the user might enable Parallel IO, which requires MPI. When enabled, the hdf5 cmakelists use find_package to get MPI and all is fine. Hi there, I am not familiar with hdf5 or mpi. What are you referring to when you say the hdf5 cmakelists ? Do you mean FindHDF5.cmake? Users of hdf5 might not know that they are using an hdf which has parallel IO enabled, and compilation is complicated by the unexpected dependency on mpi libs and includes Can you be specific about what is more complicated? I'm not familiar with what is complicated. Is this new feature designed to resolve this long standing irritation so that when installed, the hdf5 will add the mpi dependency behind the scenes? Sort of/maybe. It is designed for use with IMPORTED targets, which in general means that the upstream uses CMake and installs a Config.cmake file. As there is a FindHDF5.cmake, I'm guessing that is not the case here. However, it would be possible to create IMPORTED targets in the Find file. However, there may be other ways of solving the problems you're experiencing regarding convenience, even without these features. Using these features has certain conveniences, but they don't seem to be what you're after. What you're after seems to be possible anyway. PNG_LIBRARIES contains ZLIB_LIBRARY for example, because it depends on it. Should HDF5_LIBRARIES contain MPI_LIBRARIES? Sorry I can't give more useful information. Maybe someone else can. Thanks, Steve. -- Powered by www.kitware.comhttp://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 -- 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
Re: [cmake-developers] CMake 2.8.11-rc3 ready for testing!
Sorry, I assumed too much familiarity with hdf5/mpi Hdf5 has CMakelists.txt files and declares a number of targets. When built with parallel IO, hdf5 used find_package(MPI) to get the required libs and includes for the library to compile and link nicely with mpi. No problem When you do a make install on hdf5, it creates a set of very nice cmake files C:\Program Files\hdf5-1.8.11\cmake\hdf5\hdf5-targets.cmake C:\Program Files\hdf5-1.8.11\cmake\hdf5\hdf5-targets-debug.cmake C:\Program Files\hdf5-1.8.11\cmake\hdf5\hdf5-targets-release.cmake C:\Program Files\hdf5-1.8.11\cmake\hdf5\hdf5-config.cmake C:\Program Files\hdf5-1.8.11\cmake\hdf5\hdf5-config-version.cmake Which declare imported targets for debug and release and do everything right. Except that if the user picks up HDF5 using the syntax find_package(HDF5 NO_MODULE) i.e. NOT using the findhdf5 (because we want to pick up the cmake config) then the user's project has a 'hidden' dependency on mpi includes and libs and unless they add a find_package(mpi) to their project - and add the necessary include dirs. And links - theit build will fail What I'd like to di, is in the target import declared by hdf5, add in this transitive link dependency to m pi. In the past I was advised not to do this, but my hope is that this can be expressed nicely with the new syntax Yes? JB -Original Message- From: cmake-developers-boun...@cmake.org [mailto:cmake-developers-boun...@cmake.org] On Behalf Of Stephen Kelly Sent: 22 April 2013 16:35 To: cmake-developers@cmake.org Subject: Re: [cmake-developers] CMake 2.8.11-rc3 ready for testing! Biddiscombe, John A. wrote: May I ask one question related to the Target Usage Requirements ... For HDF5 (for example), the user might enable Parallel IO, which requires MPI. When enabled, the hdf5 cmakelists use find_package to get MPI and all is fine. Hi there, I am not familiar with hdf5 or mpi. What are you referring to when you say the hdf5 cmakelists ? Do you mean FindHDF5.cmake? Users of hdf5 might not know that they are using an hdf which has parallel IO enabled, and compilation is complicated by the unexpected dependency on mpi libs and includes Can you be specific about what is more complicated? I'm not familiar with what is complicated. Is this new feature designed to resolve this long standing irritation so that when installed, the hdf5 will add the mpi dependency behind the scenes? Sort of/maybe. It is designed for use with IMPORTED targets, which in general means that the upstream uses CMake and installs a Config.cmake file. As there is a FindHDF5.cmake, I'm guessing that is not the case here. However, it would be possible to create IMPORTED targets in the Find file. However, there may be other ways of solving the problems you're experiencing regarding convenience, even without these features. Using these features has certain conveniences, but they don't seem to be what you're after. What you're after seems to be possible anyway. PNG_LIBRARIES contains ZLIB_LIBRARY for example, because it depends on it. Should HDF5_LIBRARIES contain MPI_LIBRARIES? Sorry I can't give more useful information. Maybe someone else can. Thanks, Steve. -- Powered by www.kitware.comhttp://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 -- 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
[cmake-developers] CMake 2.8.11-rc3 ready for testing!
The CMake 2.8.11 release candidate continues. This is the last RC unless a critical, must-fix issue is found. You can find the source and binaries here: http://www.cmake.org/files/v2.8/?C=M;O=D Some of the notable changes in this release are: - Introduced Target Usage Requirements - Targets can specify usage requirements for their consumers such as include directories and preprocessor definitions; previously only link dependencies were supported - target_link_libraries(myexe yourlib) can now build myexe sources with requirements specified by yourlib - Added target_include_directories and target_compile_definitions commands with PUBLIC/PRIVATE/INTERFACE options - See design and development discussion at http://community.kde.org/Frameworks/Epics/CMake_target_usage_requirements - Introduced a Generator Toolset selection for VS = 10 and Xcode = 3 - Tell the IDEs which compiler toolchain to use - ex. Use VS 9 tools under VS 10: -G “Visual Studio 10” -T “v90” - Introduced ExternalData Module - Keep source trees lightweight by storing data separately - Reference data unambiguously from source tree by content hash - Fetch on-demand during build from local or remote resources - CMake: Sublime Text Generator added that supports both Make and Ninja - CMake: Added support for Texas Instruments C6 and up compilers - CMake: Improve OpenBSD support - CMake: Support for Windows CE with VS 8 and 9 generators - CPack: Added Support for 64bit NSIS - CPack: Added WiX Package Generator - ExternalProject: Will run git fetch less often - FindBoost: Major overhaul of searching and result caching - FindCUDA: Now has support for separable compilation - FindQt4: Overall improvements to finding Qt and importing targets - FindSquish: Added support for squish 4 - GetPrerequisites: Port to MinGW with objdump The bug tracker change log page for this version is at: http://public.kitware.com/Bug/changelog_page.php?version_id=103 Following is the complete list of changes in this rc since the previous rc. Please try this version of CMake on your projects and report any issues to the list or the bug tracker. This release candidate will become the final release for 2.8.11 unless a serious issue is reported. Changes in CMake 2.8.11-rc3 (since 2.8.11-rc2) -- Brad King (1): get_filename_component: Document path components more clearly (#14091) Rolf Eike Beer (1): try_compile: add missing fclose() to recently added error case Stephen Kelly (1): Fix clearing of the INCLUDE_DIRECTORIES DIRECTORY property. -- 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