我的 CMake 输出的是一个静态库。我是这样创建它的:
当我试图让myMainLib与第三方lib/dll链接时,出现了问题。dll文件在运行时可以找到,但是我尝试导入/链接lib文件时却没有成功。我的第三方库是SDL2和SDL2 NET。
我认为这很简单,并且已经尝试了所有在网上找到的方法,但都失败了。下面是我尝试过的方法列表,请告诉我我做错了什么。
add_library(myMainLib STATIC ${BACKEND_SOURCES})
当我试图让myMainLib与第三方lib/dll链接时,出现了问题。dll文件在运行时可以找到,但是我尝试导入/链接lib文件时却没有成功。我的第三方库是SDL2和SDL2 NET。
我认为这很简单,并且已经尝试了所有在网上找到的方法,但都失败了。下面是我尝试过的方法列表,请告诉我我做错了什么。
Simple method, using target_link_libraries
add_library(myMainLib STATIC ${BACKEND_SOURCES}) target_link_libraries(myMainLib path_to_thirdPartyLib/thirdParty.lib)
According to cmake docs
add_library(myMainLib STATIC ${BACKEND_SOURCES}) add_library(Third_Party SHARED IMPORTED) set_property(TARGET Third_Party PROPERTY IMPORTED_LOCATION path_to_thirdPartyLib/thirdParty.dll) set_property(TARGET Third_Party PROPERTY IMPORTED_IMPLIB path_to_thirdPartyLib/thirdParty.lib) target_link_libraries(myMainLib Third_Party)
Set path to library using link directories
add_library(myMainLib STATIC ${BACKEND_SOURCES}) set(LIB_DIR path_to_thirdPartyLib) LINK_DIRECTORIES(${LIB_DIR}) target_link_libraries(myMainLib ${LIB_DIR}/thirdParty.lib)
Try finding the library
add_library(myMainLib STATIC ${BACKEND_SOURCES}) find_library(Third_Party thirdParty.lib) if(Third_Party) #never gets in here target_link_libraries(myMainLib ${Third_Party}) endif()