如何通过CMakeLists.txt修改生成的Makefile中的LD_LIBRARY_PATH?
解决CMake构建Qt项目时uic工具的LD_LIBRARY_PATH配置问题
你可以通过修改CMakeLists.txt中的CMAKE_UIC_COMMAND变量,让CMake自动在生成的Makefile中为uic命令添加LD_LIBRARY_PATH环境变量前缀,无需手动修改Makefile。具体步骤如下:
先确保已正确找到Qt的uic工具
在CMakeLists.txt中完成Qt的包查找后,获取uic工具的实际路径:find_package(Qt5 REQUIRED COMPONENTS Widgets) get_target_property(UIC_EXEC_PATH Qt5::uic IMPORTED_LOCATION)如果是Qt6,将
Qt5替换为Qt6即可。重新构造带环境变量的uic命令
将LD_LIBRARY_PATH前缀添加到uic命令前,覆盖默认的CMAKE_UIC_COMMAND:set(CMAKE_UIC_COMMAND "LD_LIBRARY_PATH=/3rdparty/tools_ext/lib/lin64:$ENV{LD_LIBRARY_PATH} ${UIC_EXEC_PATH}")这样CMake生成的Makefile中,所有调用uic的地方都会自动带上这个环境变量配置,避免手动修改被覆盖的问题。
备选方案:全局设置Makefile环境变量
如果你希望所有构建过程中的工具都能使用这个库路径(不只是uic),可以设置CMAKE_MAKEFILE_FLAGS:
set(CMAKE_MAKEFILE_FLAGS "${CMAKE_MAKEFILE_FLAGS} LD_LIBRARY_PATH=/3rdparty/tools_ext/lib/lin64:$ENV{LD_LIBRARY_PATH}")
这种方式会让make命令执行时全局生效,但可能影响其他工具的运行,按需选择即可。
内容的提问来源于stack exchange,提问作者jpo38
相关产品推荐
相关产品推荐

