Добавить зависимость не в подкаталог с помощью CMake

Допустим, существует следующая структура каталогов:

root
  |
  +--projects
  |      |
  |      +-test
  |         |
  |         +-CMakeFiles.txt
  |
  +--libs
       |
       +-testlib
            |
            +-CMakeFiles.txt

testсодержит CMakeFiles.txtи testlibтакже содержит CMakeFiles.txt. «test» создает исполняемый файл, а «testlib» создает статическую библиотеку.

Я хочу, чтобы "test" связывался с "testlib" без использования символических ссылок и без перемещения библиотеки "testlib" в подкаталог внутри "test".

Поскольку "testlib" не является подкаталогом "test", я не могу выполнить

add_subdirectory("../../libs/testlib")

В тесте CMakeFiles.txt— CMake будет жаловаться на то, что «testlib» отсутствует в подкаталоге «test».

Кроме того, поскольку в системе есть несколько разных компиляторов, я не могу просто установить библиотеки «testlib» в какой-то центральный каталог, поэтому я хочу, чтобы testскомпилировал локальную копию testlibи связать с ним (т.е. как если бы testlibбыл подкаталогом). Я также хочу, чтобы проект «test» автоматически перестраивал «testlib», если он был изменен.

Итак, как мне с этим справиться? Я использую CMake 2.8.4 в Windows XP SP3.

17
задан Peter Mortensen 3 September 2018 в 13:05
поделиться