Я просто хотел добавить некоторую справочную информацию (обсуждалось, например, здесь , как установить cmake_c / xx_flags для инструментальной цепочки? ).
Короче говоря, переменные CMAKE_
кэшируются по дизайну в сценариях CMake
(что означает, что вы можете изменить их в приложении графического интерфейса CMake после шага настройки).
Итак, вы должны - если установить их в файл Toolchain - сначала поместите их в кеш. Собственный скрипт CMake (выполненный после файла Toolchain) не поставляется с FORCE
, поэтому он не будет перезаписывать его снова.
Взгляните на CMakeCInformation.cmake (из share \ cmake-2.8 \ Модули):
set(CMAKE_C_FLAGS_INIT "$ENV{CFLAGS} ${CMAKE_C_FLAGS_INIT}")
# avoid just having a space as the initial value for the cache
if(CMAKE_C_FLAGS_INIT STREQUAL " ")
set(CMAKE_C_FLAGS_INIT)
endif()
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS_INIT}" CACHE STRING
"Flags used by the compiler during all build types.")
Как вы можете видеть, официальный способ сделать это будет использовать CMAKE_C_FLAGS_INIT
для ввода дополнительных флагов. Проблема в том, что последующие изменения в файле Toolchain не будут распознаны (кеш не будет перезаписан, см. Выше).
Учитывая все это, ваше временное решение является правильным выбором. Чтобы быть уверенным, потому что файл Toolchain анализируется дважды во время процесса Configuration / Generation - вы могли бы даже добавить вызов UNSET
перед установкой CMAKE_C_FLAGS
в файл инструментальной цепочки:
UNSET(CMAKE_C_FLAGS CACHE)
SET(CMAKE_C_FLAGS "-std=gnu99" CACHE STRING "" FORCE)
Еще один часто найденное решение состоит в том, чтобы использовать что-то вроде:
add_definitions(" -std=gnu99")
для ввода флагов компиляции (но это не означает, что конфигурация не поддерживается, поскольку определения переменных). См. Также CMake clang и c ++ 0x
С CMake 2.8.12 были введены новые команды, поэтому вы могли бы сделать (не тестировались, просто чтобы показать возможности):
add_compile_options("$<$:-std=gnu99>")
add_compile_options("$<$:-std=gnu99 -g3>")
См. . Каков современный метод установки общих флагов компиляции в CMake? и выражение генератора CMake, дифференцируйте код C / C ++ для получения дополнительной информации о это.
Pull Request - это функция GitHub, а не собственная команда Git. Однако, если у вас есть имена исходных и целевых веток, вы можете изменить файлы, используя
git diff --name-status firstbranch..yourBranchName
, показывающие, какие файлы были изменены между двумя ревизиями
Вы можете использовать GitHub API. Например, https://api.github.com/repos/octocat/Hello-World/pulls/488/files
octocat
является владельцем проекта, Hello-World
является проектом имя и 488
- номер запроса на получение. Вы можете изменить эти значения для вашего запроса. Этот запрос возвращает массив измененных файлов JSON, а атрибут filename
указывает путь к файлу.