linux上读取不到库文件路径,c – Windows上的Cmake不添加共享库路径(适用于Linux)

Windows根本没有一些必要的概念来允许CMake设置您的构建环境.链接时,Windows将查找与二进制文件相同的目录,然后搜索PATH中的目录.在大多数Unix平台上都没有像RPATH那样注入其他更合适的路径. DLL通常应与二进制文件一起安装在同一目录中.

在我看来,Windows上的最佳实践是将DLL放在二进制文件旁边. CMake试图让这更容易,

install(TARGETS MyTarget

EXPORT "MyProjectTargets"

RUNTIME DESTINATION "${INSTALL_RUNTIME_DIR}"

LIBRARY DESTINATION "${INSTALL_LIBRARY_DIR}"

ARCHIVE DESTINATION "${INSTALL_ARCHIVE_DIR}")

将DLL安装到RUNTIME目标,但将libs放在LIBRARY目标中.这意味着通常在类Unix操作系统上,lib具有共享对象,但CMake知道DLL是有效的运行时并且会进入bin.希望这会使事情更加清晰. CMake / Eclipse不可能真正改善这一点,除了在点击从Eclipse运行时将额外的目录注入到PATH中(不确定是否可行).

如果您关注构建树,那么以下内容可以很好地工作(如下面的注释中所示):

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")

set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")

set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")

如果要允许覆盖这些(可能有用),则应使用if(NOT var_name)块来保护它们.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值