CMake создает несколько библиотек в одном проекте - PullRequest
0 голосов
/ 26 мая 2020

У меня есть специальный проект c CMake, который я хотел бы создать как статическую c lib, так и общий объект (только Linux). Соответствующая часть файла CMake:

...

# Static lib
add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS})

# Build shared object in Linux only
if(UNIX)
    set_target_properties(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON)
    add_library("${PROJECT_NAME}_SHARED" SHARED ${SOURCES} ${HEADERS})
endif(UNIX)

link_directories(${ILI_EXTERNAL_LIB_DIRS})

target_link_libraries(${PROJECT_NAME} ${ILI_EXTERNAL_LIBS} IliLib PlantModel)

Я могу понять, почему общий объект не создается, когда я добавляю сообщение в блок Unix, оно печатается во время сборки make. Остальная часть этого файла cmake устанавливает только переменные и объявляет имя проекта.

Есть какие-нибудь советы по go отладке этой проблемы? Как на Windows, так и на Linux, в настоящее время строится только stati c lib.


Изменить: Ссылка на CMake и сделать вывод журнала .

1 Ответ

0 голосов
/ 26 мая 2020

Решение было предложено @Tsyvarev, тривиальная ошибка с моей стороны.

stati c lib собирался, потому что он зависел от другой цели сборки. Я не запускал явно команду «Make» для проекта SimulatorLib.

Сообщения CMake появляются в журнале CMake независимо от того, создается ли этот конкретный проект.

...