当我使用cmake添加依赖项时,如何禁用自动“ .lib”附加?

时间:2019-06-17 09:13:17

标签: cmake object-files

我想将“ .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 个答案:

答案 0 :(得分:1)

应该通过以下方式将它们包括在内:ADD_EXECUTABLE(myProgram ${OBJS} <other-sources>)或在您的情况下为ADD_EXECUTABLE(myProgram ${EXT_LIBS} <other-sources>)

如果您想为debugrelease进行不同的链接

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文件和索引串联在一起的集合。链接器的对待方式也不应该有任何区别。   As per answer

在我看来add_library仅适用于.a.lib文件。 并且TARGET_LINK_LIBRARIES仅添加系统库文件。