我有一个简单的程序和一个DLL thirdparty.dll
我必须在编译和运行时链接。我把它放在我的CLion项目的lib/
目录中。无论我做什么,并且看了几个小时的CMake和SO帖子,没有, 天 ,我尝试了很多组合,但我无法获得CMake的{{ 1}}实际找到find_library
目录中的正确的库。我使用了显式路径,相对路径,完整文件名,没有lib/
的文件名,你给它命名,无论如何,我总是得到同样无用的消息:
.dll
以下是make[2]: *** No rule to make target 'OTHERDLL-NOTFOUND', needed by 'MyProgram.exe'. Stop.
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/MyProgram.dir/all' failed
的相关摘录:
CMakeLists.txt
答案 0 :(得分:1)
根据this tutorial,在合并find_library
和add_library
时,您应该在add_library
调用中使用库名称(而不是完整路径),然后设置进口地点。所以:
find_library(OTHERDLL NAMES thirdparty PATHS ${CMAKE_SOURCE_DIR}/lib)
message(STATUS "find_library returned ${OTHERDLL}")
add_library(anyNameIsGood SHARED IMPORTED) #anyNameIsGood could be thirdparty for example
set_property(TARGET anyNameIsGood PROPERTY IMPORTED_LOCATION "${OTHERDLL}")
#(...)
target_link_libraries(MyProgram anyNameIsGood)
答案 1 :(得分:0)
在CMake中,您应该使用$ {...}来调用变量,而不是
target_link_libraries(MyProgram OTHERDLL)
使用
target_link_libraries(MyProgram ${OTHERDLL})