I have ExternalProject in both versions 1.2 and 2.2 present in my system. ExternalProject is a CMake project and CMake finds the both versions without trouble when I ask for them. Command find_package(ExternalProject 1.2 EXACT)
finds version 1.2 and find_package(ExternalProject 2.2 EXACT)
finds version 2.2.
Versions 1 and 2 are not compatible with each other. The APIs are completely different.
I have a CMake project, MyProject, which has two targets, targetOne and targetTwo. TargetOne uses ExternalProject 1.2 and TargetTwo uses ExternalProject 2.2.
The below code does not do what I want. The same external dependency is not looked up twice. The compilation of TargetTwo fails. Does CMake support this scenario in any way? (except by renaming the ExternalProject version 2 and compiling it in a different location).
project(MyProject)
find_package(ExternalProject 1.2 EXACT)
add_executable(targetOne target_one.c)
target_link_libraries(targetOne ExternalProject::externalProject)
find_package(ExternalProject 2.2 EXACT)
add_executable(targetTwo target_two.c)
target_link_libraries(targetTwo ExternalProject::externalProject)
ExternalProject_DIR:PATH
, the last found, i.e. for version 2.2 in this case. This probably has no practical meaning if the projects are found with Find*.cmake file or via CMake package cache,~/.cmake/packages
. If the package location is specified on the command line, e.g.-D ExternalProject_ROOT=<dir>
, then this approach will not work. – Hilaire