У меня есть структура каталогов следующим образом:Родственные каталоги в CMake
root
libA
CMakeLists.txt
ClassA.cpp
libB
CMakeLists.txt
ClassB.cpp
sharedCode
enums.h
AbstractClass.h
В CMake файл как может включать в себя каталог sharedCode? Так что как classA (в libA), так и classB (в libB) могут использовать enums.h и AbstractClass.h?
В CMakeLists.txt я попытался с помощью:
add_subdirectory(../sharedCode)
но дает ошибку
add_subdirectory not given a binary directory but the given source
directory "/root/sharedCode" is not
a subdirectory of "root/libA". When
specifying an out-of-tree source a binary directory must be explicitly
specified.
Даже если вы решите данную ошибку, добавив параметр двоичной директории, ваш каталог 'sharedCode', похоже, не имеет собственного' CMakeLists.txt' (который, возможно, был бы излишним, если он содержит только заголовки) , Поэтому я бы просто сделал 'include_directories (../ sharedCode)'. – Florian
Он может включать файлы cpp –
Хорошо, тогда у вас есть аналогичная структура каталогов, которая у меня есть в одном из моих проектов. Более подробную информацию о возможных решениях CMake, отражающих вашу настройку, см., Например, [CMake: как установить зависимости Source, Library и CMakeLists.txt?] (Http://stackoverflow.com/questions/31512485/cmake-how-to-setup-source-library-and-cmakelists-txt-dependencies) или [Библиотека разделов CMake с несколькими исполняемыми файлами] (http://stackoverflow.com/questions/33443164/cmake-share-library-with-multiple-executables) – Florian