Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:
null
. null
. null
, как если бы это был массив. null
, как если бы это был массив. null
как будто это было значение Throwable. Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null
.
Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html
Предполагая, что у вас есть 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
получают разные значения
cmake ..
из своего исходного дерева, вы делаете сборку вне дерева. – user2485710 12 May 2014 в 12:25src
? Я думаю, поэтому я не могу связать этот ответ с моим вопросом - потому что я не знаю, где вы помещаете файл CMakeLists.txt. – patchwork 12 May 2014 в 13:22CMAKE_BINARY_DIR
- это папка, из которой я сначала запускаю командуcmake
? (В вашем примере папка<some location>/build
...) – patchwork 12 May 2014 в 13:55