Как найти пакет после компиляции соответствующего внешнего проекта? - PullRequest
1 голос
/ 03 июня 2011

Есть ли способ найти пакет только после компиляции внешнего проекта, поскольку пакет для поиска создается после компиляции этого внешнего проекта?

На данный момент у меня есть:

include(ExternalProject)
externalproject_add(
  libantlr3c
  SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib/libantlr3c-3.1.3
  CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/lib/libantlr3c-3.1.3/configure -prefix=${CMAKE_CURRENT_SOURCE_DIR}/lib/libantlr3c-3.1.3
  PREFIX ${CMAKE_CURRENT_SOURCE_DIR}/lib/libantlr3c-3.1.3
  BUILD_COMMAND make
  BUILD_IN_SOURCE 1
)

find_library(
  antlr3c
  libantlr3c.a
  HINTS ${CMAKE_CURRENT_SOURCE_DIR}/lib/libantlr3c-3.1.3
)

Конечно, ничего не получается.

Спасибо.

1 Ответ

3 голосов
/ 03 июня 2011

Поскольку вы контролируете, где создаются библиотеки, вам не нужно использовать find_library.Вы можете использовать link_directories напрямую.Вы, вероятно, захотите то же самое для каталогов включения, чтобы добавить пути включения в строку компиляции.Что-то подобное должно сделать это:

include(ExternalProject)
set(antlr3c_LIBRARIES
    ${CMAKE_CURRENT_SOURCE_DIR}/lib/libantlr3c-3.1.3)
set(antlr3c_INCLUDE_DIRS
    ${CMAKE_CURRENT_SOURCE_DIR}/lib/libantlr3c-3.1.3/include)
externalproject_add(
  libantlr3c
  ....
)
link_directories(${antlr3c_LIBRARIES})
include_directories(${antlr3c_INCLUDE_DIRS})
add_executable(my_exe ${SOURCES})
target_link_libraries(my_exe antlr) # or antlr3c or whatever -lantlr is needed
...