我想将“ .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文件链接到我的项目?
答案 0 :(得分:1)
应该通过以下方式将它们包括在内: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。
.LIB文件是.OBJ文件和索引串联在一起的集合。链接器的对待方式也不应该有任何区别。 As per answer
在我看来add_library
仅适用于.a
和.lib
文件。
并且TARGET_LINK_LIBRARIES
仅添加系统库文件。