#c #visual-studio-2010 #cmake
#c #visual-studio-2010 #cmake
Вопрос:
Мой вопрос в значительной степени связан с этим (оставшимся без ответа) вопросом в списке рассылки CMake.
По сути, я хочу знать о поведении include_directories за кулисами генератора Visual Studio 2010; перезаписываются ли каталоги из предыдущих вызовов include_directories при выполнении этого:
set_target_properties(${Target} PROPERTIES COMPILE_FLAGS /I${some_directory})
В комментариях к списку рассылки говорится «этого не должно быть», но, похоже, я наблюдаю именно такое поведение. Я понимаю, что проекты в VS2010 немного сложнее, но я не могу найти окончательного ответа. Может ли это быть просто ошибкой с генератором 2010?
Я использую Visual Studio 2010 с пакетом обновления 1 и CMake 2.8.4
Комментарии:
1. Почему вы хотите добавить эту строку? Почему это
include_directories
не подходит для вас?2. @Naszta эта строка также используется для указания других флагов компилятора, а не только /I. Кажется, что когда я использую это с / I, CMake забывает все, что ранее было установлено с помощью include_directories
3. Хорошо, я это понимаю. Вы все еще используете его? Почему это большая проблема? Вы могли бы использовать
include_directories
правильно для определения путей включения. Почему вы предпочитаетеset_target_properties(${Target} PROPERTIES COMPILE_FLAGS /I${some_directory})
?4. @Naszta Я поддерживаю модули, написанные не мной, которые используют этот метод. Я решил проблему, написав несколько макросов для разрешения зависимостей includes и добавления их в качестве флагов вместо смешивания использования COMPILE_FLAGS и include_directories. Ваши комментарии были полезными, поэтому я отмечу их как ответы.
Ответ №1:
Я не видел вашего CMakeLists.txt но хорош ли порядок включаемых путей? Я думаю, что порядок включаемых путей не определен, если вы делаете это таким образом. Смотрите: /I параметр компилятора, документацию по set_target_properties и include_directories.