Linux Mint 17.2/clang 3.4/CMake 3.2.2cmake target_compile_definitions и target_link_libraries сталкиваются, может быть, с Qt-строками?
Я попытался упростить проблему, связанную с какой-либо фиктивной программой, но это не сработало. (Т.е. проблема не воспроизводится там), но вот суть:
У меня есть файл, который имеет CMakeLists.txt линии к эффекту:
add_executable(${PROJECT_NAME} main.cpp)
target_link_libraries(${PROJECT_NAME) projectLib1 Qt5::Core Qt5::Widgets)
target_compile_definitions(${PROJECT_NAME) PUBLIC V_MAJOR=${CPACK_VERSION_MAJOR})
и так далее.
Когда я бегу CMake, он генерирует flags.make файл:
CXX_DEFINES = -DV_MAJOR=3
-DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB
где есть разрыв строки между определениями компилировать и определений, порожденных ссылки на Qt.
Я попытался в меньшей программе воспроизвести это (ссылка на Qt, добавление определений компиляции), но она не генерирует ту же ошибку прерывания строки.
Кроме того, когда я вхожу и вручную редактирую флажок.make, он будет скомпилирован; но я знаю, что это действительно не так, как использовать систему.
Любые мысли?
Edit: Просто для ясности, когда я пытаюсь скомпилировать, я получаю сообщение об ошибке:
.../flags.make:8: *** missing separator. Stop.
где 8 является номер строки разрыва строки в этом файле flags.make.
Возможно, вы превысили разрыв строки в переменной 'CPACK_VERSION_MAJOR'. Попробуйте свой код с жестко запрограммированным определением 'V_MAJOR = 3'. – Tsyvarev
Да, я тоже подумал об этом. Я вижу проблему и размещаю ее ниже. – shavera