diff --git a/3rdparty/dtl/CMakeLists.txt b/3rdparty/dtl/CMakeLists.txt index 8b49bf476f..3b31972b67 100644 --- a/3rdparty/dtl/CMakeLists.txt +++ b/3rdparty/dtl/CMakeLists.txt @@ -32,5 +32,8 @@ foreach(_t ${targets}) add_man(${_t}.man) endforeach() -install(TARGETS ${targets} DESTINATION ${LYX_UTILITIES_INSTALL_PATH}) +# Install dtl tools in this directory to omit possible packaging conflicts +# if installing multiple lyx versions, each with own dtl executables +get_data_destination(dest_data) +install(TARGETS ${targets} DESTINATION "${CMAKE_INSTALL_PREFIX}/${dest_data}/extratools") install(FILES ${_manuals} DESTINATION ${LYX_MAN_DIR}/man1) diff --git a/src/LyX.cpp b/src/LyX.cpp index 20c5e83b01..d800d19780 100644 --- a/src/LyX.cpp +++ b/src/LyX.cpp @@ -909,6 +909,25 @@ bool LyX::init() if (package().build_support().empty()) prependEnvPath("PATH", package().binary_dir().absFileName()); #endif + { + // Add the directory containing the dt2dv and dv2dt executables to the path + FileName dtldir; + if (!package().build_support().empty()) { + // dtl executables should be in the same dir ar tex2lyx + dtldir = package().binary_dir(); + } + else { + dtldir = FileName(addName(package().system_support().absFileName(), "extratools")); + } +#if defined(_WIN32) + string dtlexe = "dt2dv.exe"; +#else + string dtlexe = "dt2dv"; +#endif + FileName const dt2dv = FileName(addName(dtldir.absFileName(), dtlexe)); + if (dt2dv.exists()) + prependEnvPath("PATH", dtldir.absFileName()); + } if (!lyxrc.path_prefix.empty()) prependEnvPath("PATH", replaceEnvironmentPath(lyxrc.path_prefix));