Dear group,

I'm new to CMake and read all related tutorials that I could find and the Mastering CMake book (I didn't get very far) and watched Daniel Pfeifer's talk. Unfortunately, I'm afraid that I still cannot figure out a couple of apparently simple things, especially in today's "best practices" style.

Please consider:

    find_package(JPEG REQUIRED)

At first, this didn't work for me under Ubuntu Linux, because I didn't have the libjpeg-dev package installed. The error message was:

CMake Error at /usr/share/cmake-3.9/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
  Could NOT find JPEG (missing: JPEG_LIBRARY JPEG_INCLUDE_DIR)
Call Stack (most recent call first):
/usr/share/cmake-3.9/Modules/FindPackageHandleStandardArgs.cmake:377 (_FPHSA_FAILURE_MESSAGE) /usr/share/cmake-3.9/Modules/FindJPEG.cmake:30 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  Libs/CMakeLists.txt:5 (find_package)

Well, I provoked this intentionally for learning and testing, but if I hadn't been prepared, from the error message alone I would not have known how to proceed. `sudo apt install libjepg-dev` fixed the problem.

Now I'm under Windows, Visual Studio Community 2017. Same error message, and obviously no solution as easy as `sudo apt ...`. It's quite clear that I have to add the libjpeg source code as a subfolder to my project and compile it as part of the main project. But, starting with the above `find_package(JPEG REQUIRED)`, how is this properly done?

Generalizing my question:

I started with `find_package(JPEG REQUIRED)` as shown above in order to the find the JPEG library that comes preinstalled with the system.
How do I deal with the following scenarios?

- libjpeg is theoretically available, but just not installed in the system (that is, `sudo apt install libjpeg-dev` would help)?

- libjpeg is available in the system, but the version is too new or too old?

  - libjpeg is not available in the system at all (e.g. Windows)?

- As a fallback, in the case that any of the above checks is negative, it seems that there is no alternative but to ship and compile a copy of libjpeg along with my project: How is this properly expressed in my project's CMakeLists.txt? Daniel mentioned something about the behavior of `find_package()` in his talk, but I'm afraid that I still cannot come up with a proper solution.

Best regards,
Carsten

--

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