Переменная в CMake указывает на каталог, в котором он был вызван? [Дубликат]

Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  1. Вызов метода экземпляра объекта null.
  2. Доступ или изменение поля объекта null.
  3. Принимая длину null, как если бы это был массив.
  4. Доступ или изменение слотов null, как если бы это был массив.
  5. Бросок null как будто это было значение Throwable.

Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null.

Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html

9
задан patchwork 12 May 2014 в 12:06
поделиться

1 ответ

Предполагая, что у вас есть 2 папки src и build, где src содержит ваши проекты, а build - это пустая папка, которую вы только что создали, чтобы вы могли развернуть в ней встроенную сборку: CMAKE_SOURCE_DIR - путь к src, где CMAKE_BINARY_DIR указывает на build.

Обратите внимание, что если вы делаете сборку в дереве, то 2 кэша имеют одинаковое значение.

ссылка: Полезные переменные CMake .


EDIT

для дальнейших разъяснений

<some location>/src/CMakeLists.txt ( so *src* is the root of your project )
<some location>/build

, если вы делаете что-то вроде

cd <some location>/build
cmake <some location>/src

, вы делаете сборку вне дерева, где CMAKE_SOURCE_DIR и CMAKE_BINARY_DIR получают разные значения

7
ответ дан user2485710 18 August 2018 в 13:46
поделиться
  • 1
    Спасибо за ответ. Но, к сожалению, я не понимаю, как этот ответ относится к моему вопросу выше. Однако, возможно, мне не хватает основной информации. – patchwork 12 May 2014 в 12:22
  • 2
    @patchwork, знаете ли вы, что такое сборка вне дерева? это когда вы настраиваете и создаете свой проект в папке, которая не является исходной исходной папкой, поэтому, когда вы говорите, что используете cmake .. из своего исходного дерева, вы делаете сборку вне дерева. – user2485710 12 May 2014 в 12:25
  • 3
    спасибо, я не знал, что такое сборка вне дерева. Мне все еще не удалось связать информацию, которую вы дали в своем ответе, с моим вопросом: «Является ли эта переменная (CMAKE_SOURCE_DIR) всегда заданной в каталоге, содержащем файл CMakeLists.txt, который я запускаю cmake? & Quot; В любом случае - я узнал, что CMAKE_SOURCE_DIR, экспортируя его в кеш. – patchwork 12 May 2014 в 13:21
  • 4
    В приведенном выше примере, где бы вы поместили первый CMakeLists.txt, который запускается? В каталоге src? Я думаю, поэтому я не могу связать этот ответ с моим вопросом - потому что я не знаю, где вы помещаете файл CMakeLists.txt. – patchwork 12 May 2014 в 13:22
  • 5
    В вашем ответе подразумевается, что CMAKE_BINARY_DIR - это папка, из которой я сначала запускаю команду cmake? (В вашем примере папка <some location>/build ...) – patchwork 12 May 2014 в 13:55
Другие вопросы по тегам:

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