Закрепление файла, а затем игнорирование будущих изменений везде [дубликат]

Невозможность связывания с соответствующими библиотеками / объектными файлами или компиляция файлов реализации

Обычно каждая единица перевода генерирует объектный файл, содержащий определения символов, определенных в этой единицы перевода. Чтобы использовать эти символы, вам необходимо связать эти объектные файлы.

В разделе gcc вы должны указать все объектные файлы, которые должны быть связаны вместе в командной строке, или скомпилировать файлы реализации вместе.

g++ -o test objectFile1.o objectFile2.o -lLibraryName

Здесь libraryName - это просто имя библиотеки, без добавления к платформе. Так, например, в файлах библиотеки Linux обычно называют libfoo.so, но вы должны писать только -lfoo. В Windows этот же файл можно назвать foo.lib, но вы будете использовать тот же аргумент. Возможно, вам придется добавить каталог, в котором эти файлы можно найти, используя -L‹directory›. Обязательно не записывайте пробел после -l или -L.

Для XCode: добавьте пути поиска заголовка пользователя -> добавьте путь поиска библиотеки -> перетащите фактическую ссылку библиотеки в

В MSVS файлы, добавленные в проект, автоматически связывают их объектные файлы, и будет создан файл lib (в общем использовании). Чтобы использовать символы в отдельном проекте, вам нужно будет добавить файлы lib в параметры проекта. Это делается в разделе Linker свойств проекта в Input -> Additional Dependencies. (путь к файлу lib должен быть добавлен в Linker -> General -> Additional Library Directories). При использовании сторонней библиотеки, которая предоставляется с файлом lib, отказ в этом обычно приводит к ошибке.

Также может случиться так, что вы забудете добавить файл в компиляцию, и в этом случае объектный файл не будет сгенерирован. В gcc вы должны добавить файлы в командную строку. В MSVS добавление файла в проект заставит его скомпилировать его автоматически (хотя файлы могут, вручную, быть отдельно исключены из сборки).

В программировании Windows контрольный знак, который вы не связывали необходимая библиотека состоит в том, что имя неразрешенного символа начинается с __imp_. Посмотрите имя функции в документации, и она должна сказать, какую библиотеку вам нужно использовать. Например, MSDN помещает информацию в поле внизу каждой функции в разделе «Библиотека».

192
задан random 11 January 2014 в 23:11
поделиться

4 ответа

Для моих проектов Code Igniter я сохраняю database.php.example и config.php.example в репо.

Затем я добавляю config.php и applications / config / database.php в. gitignore.

Итак, наконец, когда я развертываю, я могу скопировать файлы .example (в config.php и database.php), настроить их, и они не будут отслеживаться GIT.

51
ответ дан superiggy 25 August 2018 в 14:38
поделиться

Чтобы вывести ответ из комментариев другого ответа:

$ git update-index --skip-worktree FILENAME

Появляется лучше, чем --assume-unchanged

Подробнее можно прочитать об этом здесь: Git - Разница между «предполагать-неизменным» и «skip-worktree»

14
ответ дан Antoine 25 August 2018 в 14:38
поделиться

git имеет другое решение для этого. Сначала измените файл, который вы не хотите отслеживать, и используйте следующую команду:

git update-index --assume-unchanged FILE_NAME

, и если вы хотите снова отслеживать изменения, используйте эту команду:

git update-index --no-assume-unchanged FILE_NAME

Документация git-update-index

447
ответ дан Jon 25 August 2018 в 14:38
поделиться

Я бы поместил их в ваш файл .gitignore и просто скопировал их вручную по мере необходимости.

Таким образом, имя файла скелета было бы в git, имена файлов игнорирования не были бы в git (но были бы в .gitignore). Таким образом, когда ручной шаг, чтобы скопировать их в «фактический» из «шаблона» (возможно, лучше, чем скелет), они сразу игнорируются.

2
ответ дан Michael Durrant 25 August 2018 в 14:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: