Вопрос про CMake и порядок компиляции.C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Вопрос про CMake и порядок компиляции.

Сообщение Anonymous »

Недавно я столкнулся с таким вопросом:
Я хочу использовать antlr4 для синтаксического анализа в моем проекте, а в моем проекте используется язык C++, мне нужно скомпилировать ссылку antlr -runtime, чтобы удовлетворить потребности нескольких платформ, я решил собрать исходный код и поместить antlr-runtime в каталог Third_party.
Итак, в CMakelists часть исходного кода код выглядит как это:

Код: Выделить всё

add_subdirectory(third_party)
add_subdirectory(src)
add_subdirectory(test)
Мне нужен результат: скомпилировать библиотеку времени выполнения antlr4 в Third_party и связать ее с src:

Код: Выделить всё

find_library(ANTLR4_LIB_PATH antlr4-runtime PATHS ${CMAKE_BINARY_DIR}/lib NO_DEFAULT_PATH)
target_link_libraries(parser_obj ${ANTLR4_LIB_PATH})
Но в результате, если я попытаюсь скомпилировать, то получаю проблему:

Код: Выделить всё

ld: library 'ANTLR4_LIB_PATH-NOTFOUND' not found
Однако я обнаружил, что в каталоге /build/lib уже есть файл библиотеки, поэтому я могу скомпилировать его во второй раз. Есть ли способ убедиться, что antlr4 скомпилирован перед find_library? Или убедитесь, что он скомпилирован в правильном порядке?
Я пытался скомпилировать и собрать код своего проекта, но для успеха его постоянно приходилось компилировать дважды. Первый не удался, поскольку файл библиотеки antlr4-current не был найден, а второй удалось успешно скомпилировать

Подробнее здесь: https://stackoverflow.com/questions/792 ... pile-order
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»