В моей системе присутствует ExternalProject обеих версий 1.2 и 2.2. ExternalProject - это проект CMake, и CMake без проблем находит обе версии, когда я их запрашиваю. Команда find_package(ExternalProject 1.2 EXACT)
находит версию 1.2, а find_package(ExternalProject 2.2 EXACT)
находит версию 2.2.
Версии 1 и 2 не совместимы друг с другом. API совершенно разные.
У меня есть проект CMake, MyProject, который имеет две цели, targetOne и targetTwo. TargetOne использует ExternalProject 1.2, а TargetTwo использует ExternalProject 2.2.
Приведенный ниже код не делает то, что я хочу. Одна и та же внешняя зависимость не просматривается дважды. Компиляция TargetTwo не удалась. CMake поддерживает этот сценарий в любом случае? (кроме переименования версии ExternalProject 2 и компиляции его в другом месте).
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)