如何禁用“自动”;。lib";使用cmake添加依赖项时附加?

如何禁用“自动”;。lib";使用cmake添加依赖项时附加?,cmake,object-files,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”文件链接到我的项目

这是我的密码

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文件链接到我的项目?

这样做应该包括它们:
ADD_可执行文件(myProgram${OBJS})
或者在您的情况下
ADD_可执行文件(myProgram${EXT_LIBS})

如果您想为
调试
发布

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\u BUILD\u TYPE
参数添加到CMAKE gui。

LIB文件是一组.OBJ文件,这些文件通过索引连接在一起。链接器的处理方式也应该没有区别。

在我看来,只有
.a
.lib
文件才有效。
并且只添加系统库文件

谢谢你的回答。但在我的情况下,这不是一个好的解决方案。你能在你的问题中添加你的特定于案例的参数吗?为什么你不能这样做,这样人们才能给出更好的答案?嗨,塔里克,我想在构建类型为调试模式和发布模式时添加不同的“.obj”文件。你能告诉我怎么做吗?谢谢你的回答。但是当我用cmake-gui.exe配置项目时,${cmake\u BUILD\u TYPE}是空值。所以它总是编译else()的大小写。如何在CMakelist.txt中处理此问题?再次感谢。如果我手动设置值“Debug”,它将始终编译第一个案例。那么,如何确定VisualStudio build_类型在CMakelist.txt中是debug还是release?这个问题与您的问题有何不同?