Hej Alexander,

Yes, you're missing a subtle detail. You assume that the 'REQUIRED' keyword
reflects the fact that COMPONENTS are required. This is not the case. The
REQUIRED keyword reflects that the entire package Qt4 is required, see
https://cmake.org/cmake/help/v3.0/command/find_package.html where it says:
'The REQUIRED option stops processing with an error message if the package
cannot be found'

Confusing, I agree.

Sincerely,
Jakob

On Fri, Mar 4, 2016 at 9:18 AM, Alexander Stein <
alexander.stein+cm...@mailbox.org> wrote:

> Hi,
>
> I want to use some required Qt component while others are optional.
> Apparently if you specify REQUIRED in find_package OPTIONAL_COMPONENTS is
> ignored.
> Here is a minimal CMakeLists.txt:
> project(test)
> cmake_minimum_required(VERSION 3.5)
>
> find_package(Qt4 REQUIRED COMPONENTS QtCore QtGui OPTIONAL_COMPONENTS
> Invalid)
>
> /home/alex/repo/cmake/build/bin/cmake --version
> cmake version 3.5.20160303-gf37f
>
> cmake fails with:
> CMake Error at
> /home/alex/repo/cmake/Modules/FindPackageHandleStandardArgs.cmake:148
> (message):
>   Could NOT find Qt4 (missing: QT_INVALID_INCLUDE_DIR QT_INVALID_LIBRARY)
>   (found version "4.8.7")
> Call Stack (most recent call first):
>   /home/alex/repo/cmake/Modules/FindPackageHandleStandardArgs.cmake:388
> (_FPHSA_FAILURE_MESSAGE)
>   /home/alex/repo/cmake/Modules/FindQt4.cmake:1333
> (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
>   CMakeLists.txt:4 (find_package)
>
> I expected that if required components are missing cmake bails out while
> continuing when OPTIONAL_COMPONENTS are missing. My current workaround is:
> find_package(Qt4 OPTIONAL_COMPONENTS Invalid)
> find_package(Qt4 REQUIRED COMPONENTS QtCore QtGui)
>
> But I would rather use a single line. Am I missing something here?
>
> Best regards,
> Alexander
>
> --
>
> Powered by www.kitware.com
>
> Please keep messages on-topic and check the CMake FAQ at:
> http://www.cmake.org/Wiki/CMake_FAQ
>
> Kitware offers various services to support the CMake community. For more
> information on each offering, please visit:
>
> CMake Support: http://cmake.org/cmake/help/support.html
> CMake Consulting: http://cmake.org/cmake/help/consulting.html
> CMake Training Courses: http://cmake.org/cmake/help/training.html
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/cmake
>
-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake

Reply via email to