- 主题:请教一个cmakelists中使用外部库的部分
比如一个程序中使用三个外部库 用
LIST(APPEND LIBS
${L3rdParty1}
${L3rdParty2}
)
这种方式引用外部库
add_executable(.....)
target_link_libraries(${PROJECT_NAME} ${LIBS})
这样生成可执行文件 程序执行的时候发现找不到外部库的.dll
vc12编译的 程序正常编译 运行时提示找不到外部.dll
想请教这个target_link不能把外部.dll一起生成(复制)到可执行文件处吗
还是缺了什么操作
--
FROM 58.128.3.*
找DLL是根据PATH环境变量来的,在PATH中预先设置好就行。
--
FROM 125.35.121.*
在不修改环境变量的情况下 cmakelists里有什么办法吗
【 在 z16166 的大作中提到: 】
: 找DLL是根据PATH环境变量来的,在PATH中预先设置好就行。
--
FROM 58.128.3.*
静态链接到CRT也可以
cmake里面可以copy dll到exe的目录
https://stackoverflow.com/questions/10671916/how-to-copy-dll-files-into-the-same-folder-as-the-executable-using-cmake
【 在 scanworld 的大作中提到: 】
: 在不修改环境变量的情况下 cmakelists里有什么办法吗
--
FROM 125.35.121.*
不如把dll都放到一个目录,然后输出定向到这个目录
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY xxx/yyy)
// set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG xxx/yyy)
// set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE xxx/yyy)
【 在 scanworld 的大作中提到: 】
: 比如一个程序中使用三个外部库 用
: LIST(APPEND LIBS
: ${L3rdParty1}
: ...................
--
修改:cn62 FROM 175.42.46.*
FROM 175.42.46.*
Crake命令行里加上你的二进制的路径,用参数-DCMAKE_INSTALL_PREFIX=your/dll/path
【 在 scanworld (臭蛋超人) 的大作中提到: 】
:
: 感谢回复
:
: 【 在 z16166 的大作中提到: 】
--
FROM 114.242.249.*
是把第三方的dll都先放到一个目录 然后用这个输出到 xxx/yyy的意思吗?
还是第三方库都不动地方 这条语句可以完成这个输出的功能
试了下之前stackoverflow的方法 只能输出.lib文件 .dll无法输出
【 在 cn62 的大作中提到: 】
: 不如把dll都放到一个目录,然后输出定向到这个目录
: set(CMAKE_RUNTIME_OUTPUT_DIRECTORY xxx/yyy)
: // set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG xxx/yyy)
: ...................
--
FROM 125.33.64.*
不是,这个是把生成的可执行文件输出到xxx/yyy。
你原来的想法是每次编译都去拷贝所有的dll。
我的做法是把这些dll都放到一个目录,然后把可执行文件也输出到这个目录,就不会找不到dll了。
【 在 scanworld 的大作中提到: 】
: 是把第三方的dll都先放到一个目录 然后用这个输出到 xxx/yyy的意思吗?
: 还是第三方库都不动地方 这条语句可以完成这个输出的功能
: 试了下之前stackoverflow的方法 只能输出.lib文件 .dll无法输出
: ...................
--
FROM 175.42.46.*
有什么办法自动完成这个工作吗
小工程做完了之后 想直接给别的人运行 不同的机器上仅需要直接编译就好了 第三方库都在我的源程序里
这样编译完了 直接能生成最好 要不然别人还得自己重新配置
【 在 cn62 的大作中提到: 】
: 不是,这个是把生成的可执行文件输出到xxx/yyy。
: 你原来的想法是每次编译都去拷贝所有的dll。
: 我的做法是把这些dll都放到一个目录,然后把可执行文件也输出到这个目录,就不会找不到dll了。
: ...................
--
FROM 125.33.64.*