Как отключить автоматическое подключение ".lib", когда я добавляю зависимости с помощью cmake? - PullRequest
0 голосов
/ 17 июня 2019

Я хочу связать файл ".obj" с моим проектом.

Вот мой код.

set(EXT_LIBS json_reader.obj json_writer.obj)
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${EXT_LIBS}) 

Но в результате я связал следующие файлы.

json_reader.obj.lib
json_writer.obj.lib

".lib" автоматически присоединяется, если это не файл * .lib.

Я хочу получить следующий результат

json_reader.obj
json_writer.obj

Как я могу связать файлы * .obj с моимпроект?

1 Ответ

1 голос
/ 17 июня 2019

Они должны быть включены следующим образом: ADD_EXECUTABLE(myProgram ${OBJS} <other-sources>) или в вашем случае ADD_EXECUTABLE(myProgram ${EXT_LIBS} <other-sources>)

Если вы хотите по-разному связать для debug и release

if(${CMAKE_BUILD_TYPE} == "Debug")
    set(EXT_LIBS json_reader.obj json_writer.obj)
else()
    set(EXT_LIBS json_reader_alt.obj json_writer_alt.obj)
endif()

Вы можете добавить параметр CMAKE_BUILD_TYPE в cmake-gui, добавив запись.enter image description here

Файл .LIB представляет собой набор файлов .OBJ, объединенных вместе с индексом.Там не должно быть никакой разницы в том, как обрабатывает компоновщик либо. Согласно ответу

Мне кажется, что add_library работает только с файлами .a и .libTARGET_LINK_LIBRARIES добавляет только файлы системной библиотеки.

...