@ Ответ JoakimGebart, вероятно, является более распространенным способом решения этой проблемы. Тем не менее, вы можете также использовать get_directory_property
непосредственно изнутри второго суббайта, чтобы добиться того, что вам нужно.
Я вижу, что в вашем комментарии вы использовали ${LIB_NAME}_publicheaders
, но в вашем вопросе у вас есть ${LIBNAME}_publicheaders
. Это может быть причиной ваших проблем, так как команда должна работать так:
get_directory_property(MyVar
DIRECTORY ${CMAKE_SOURCE_DIR}/abc
DEFINITION ${LIBNAME}_publicheaders)
Однако есть несколько оговорок:
- Это будет называться после установки переменного в поддире. т. е. вы должны были бы вызывать
add_subdirectory(abc)
до add_subdirectory
для того, где это будет использоваться.
- Если
LIBNAME
также является set
внутри одного и того же subdir (abc), вам нужно будет получить значение для этого в первую очередь.
Таким образом, хотя это, вероятно, менее распространенное решение, он имеет то преимущество, что он не «загрязнять» глобальное пространство имен подкаталогов конкретных переменными - это работает от с подкаталогом со ссылкой на другой подкаталог.
Я пытаюсь использовать: get_directory_property ($ {VAR} DIRECTORY "$ {CMAKE_SOURCE_DIR}/а" определение "$ {LIB_NAME} _publicheaders") , но я не уверен, что если мой синтаксис правильно – user1607549