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

How to disable auto ".lib" attaching when I add the dependencies with cmake?

我想link将“.obj”文件添加到我的项目中。

这是我的代码。

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

但结果我的以下文件已被 link编辑。

json_reader.obj.lib
json_writer.obj.lib

".lib" 如果不是 *.lib 文件则自动附加。

我想要下一个结果

json_reader.obj
json_writer.obj

如何 link *.obj 文件到我的项目?

这样做应该包括它们:ADD_EXECUTABLE(myProgram ${OBJS} <other-sources>) 或者在你的情况下 ADD_EXECUTABLE(myProgram ${EXT_LIBS} <other-sources>)

如果您想 link 以不同方式 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。

A .LIB file is a collection of .OBJ files concatenated together with an index. There should be no difference in how the linker treats either. As per answer

在我看来,add_library 仅适用于 .a.lib 文件。 而TARGET_LINK_LIBRARIES只增加了系统库文件。