cmake 3.5
.
Я пробовал следующий код в моем проекте CMake. Скажем SUBDIRS
содержит список каталогов:Cmake, include_directories в цикле foreach() не работает
1.
foreach(subdir ${SUBDIRS})
if(IS_DIRECTORY ${subdir})
MESSAGE(STATUS "Including dir " ${subdir})
include_directories(${subdir})
endif()
endforeach()
2.
set(include_dirs "")
foreach(subdir ${SUBDIRS})
if(IS_DIRECTORY ${subdir})
list(APPEND include_dirs ${subdir})
endif()
endforeach()
include_directories(${include_dirs})
3.
set(include_dirs "")
foreach(subdir ${SUBDIRS})
if(IS_DIRECTORY ${subdir})
set(include_dirs "${include_dirs} ${subdir}")
endif()
endforeach()
include_directories(${include_dirs})
Ни один из исходного кода выше работ.
Похоже, я должен заявить, конкретно каждый путь:
include_directories(path/to/dir1
path/to/dir2
...)
Я заметил, что
include_directories("path/to/dir1" "path/to/dir2")
работы, а также, в отличие от
include_directories("path/to/dir1 path/to/dir2")
, который не работает. Я думаю, что это отражает проблему foreach()
.
Любые предложения? Спасибо.
----------- редактировать -----------
Сообщение от 1.
: MESSAGE(STATUS "Including dir " ${subdir})
обеспечивает вывод:
including dir path/to/dir1
including dir path/to/dir2
Что вы подразумеваете под "не работает"? Что вы ожидаете, что происходит. Очевидно, что 'include_directories (" путь/to/dir1 путь/to/dir2 ")' неверно, поскольку вы передаете только один аргумент и это не допустимый путь. – usr1234567
Я за исключением всех каталогов, которые будут включены после директивы 'include_directories()'. – hudac
Укажите фактические пути, которые вы хотите добавить. Они содержат пробелы? Какой результат вы получаете? – usr1234567