1

I need to use mangrove (mongo ODM lib over mongo-c-driver and mongo-cxx-driver) and included this into my project as CMake ExternalProject_Add command, with a dependency on mongo-c-driver/mongo-cxx-driver

mongocxx generates CMake configuration scripts with a names like :

libmongocxx-config.cmake

libmongocxx-config-version.cmake

and no issues to find these by mangrove with that script:

set(LIBMONGOCXX_REQUIRED_VERSION 3.1.3)
set(LIBMONGOCXX_REQUIRED_ABI_VERSION v_noabi)
find_package(libmongocxx ${LIBMONGOCXX_REQUIRED_VERSION} REQUIRED)

However mongo-c-driver generates those scripts with a name which incudes ABI version into file names.

libmongoc-1.0-config.cmake

libmongoc-1.0-config-version.cmake

and similar CMake code:

set(LIBMONGOC_REQUIRED_VERSION 1.7.0)
set(LIBMONGOC_REQUIRED_ABI_VERSION 1.0)
find_package(LibMongoC ${LIBMONGOC_REQUIRED_VERSION} REQUIRED)

can't find out the scripts.

Of course, if I manually remove the version from file names, it can find those files, but I'd like to fix the problem in a script and on mangove side.

So the question about CMake techniques :

Is there an ability to specify the version of package which will automatically used by (inside CMake scripts names) find_package command to look for?

Community
  • 1
  • 1
amigo421
  • 2,429
  • 4
  • 26
  • 55

1 Answers1

2

According to find_package documentation, the version is embedded inside the libmongocxx-config-version.cmake file.

This means that if you want to get the package libmongoc-1.0-config.cmake, you should use:

find_package(libmongoc-1.0 ${LIBMONGOC_REQUIRED_VERSION} REQUIRED)
Matthieu Brucher
  • 21,634
  • 7
  • 38
  • 62