如何让CMake看到&使用我需要链接的单个DLL&运行最简单的程序?

时间:2016-05-10 10:45:42

标签: dll cmake clion

我有一个简单的程序和一个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

2 个答案:

答案 0 :(得分:1)

根据this tutorial,在合并find_libraryadd_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})