CMake: cofigure failure (Windows)

Yu Jin yu_jin at lyx.org
Sun Nov 15 14:08:43 UTC 2020


Am So., 15. Nov. 2020 um 12:57 Uhr schrieb Kornel Benko <kornel at lyx.org>:

> Am Sun, 15 Nov 2020 11:32:34 +0100
> schrieb Yu Jin <yu_jin at lyx.org>:
>
> > I can not configure master with CMake currently, it says:
> >
> > CMake Error at C:/Program
> >
> Files/CMake/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake:146
> > (message):
> >   Could NOT find Perl (missing: PERL_EXECUTABLE)
> > Call Stack (most recent call first):
> >   C:/Program
> >
> Files/CMake/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake:393
> > (_FPHSA_FAILURE_MESSAGE)
> >   C:/Program Files/CMake/share/cmake-3.16/Modules/FindPerl.cmake:76
> > (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
> >   CMakeLists.txt:1216 (find_package)
> >
> > I also noticed that it does not ask for GNUWIN32_DIR anymore. I added it
> > manually, but PERL was still not found.
>
> You have to investigate the cmake module FomdPerl.cmake.
> It may help, if you use HINTS, for instance for path D:\xxxx
>         find_package(Perl REQUIRED PATHS "D:\\xxxx")
>
> At least, this one works on linux too.
>

Uhm, ist it possible that CMake looks for a CMake configuration file for
perl and not the perl.exe? I get this with your proposal:

CMake Error at CMakeLists.txt:1216 (find_package):
  Could not find a package configuration file provided by "Perl" with any of
  the following names:

    PerlConfig.cmake
    perl-config.cmake

  Add the installation prefix of "Perl" to CMAKE_PREFIX_PATH or set
  "Perl_DIR" to a directory containing one of the above files.  If "Perl"
  provides a separate development package or SDK, be sure it has been
  installed.


Content of FindPerl.cmake:

# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.

#[=======================================================================[.rst:
FindPerl
--------

Find perl

this module looks for Perl

::

  PERL_EXECUTABLE     - the full path to perl
  PERL_FOUND          - If false, don't attempt to use perl.
  PERL_VERSION_STRING - version of perl found (since CMake 2.8.8)
#]=======================================================================]

include(${CMAKE_CURRENT_LIST_DIR}/FindCygwin.cmake)

set(PERL_POSSIBLE_BIN_PATHS
  ${CYGWIN_INSTALL_PATH}/bin
  )

if(WIN32)
  get_filename_component(
    ActivePerl_CurrentVersion
    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActivePerl;CurrentVersion]"
    NAME)
  set(PERL_POSSIBLE_BIN_PATHS ${PERL_POSSIBLE_BIN_PATHS}
    "C:/Perl/bin"
    "C:/Strawberry/perl/bin"

[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActivePerl\\${ActivePerl_CurrentVersion}]/bin
    )
endif()

find_program(PERL_EXECUTABLE
  NAMES perl
  PATHS ${PERL_POSSIBLE_BIN_PATHS}
  )

if(PERL_EXECUTABLE)
  ### PERL_VERSION
  execute_process(
    COMMAND
      ${PERL_EXECUTABLE} -V:version
      OUTPUT_VARIABLE
        PERL_VERSION_OUTPUT_VARIABLE
      RESULT_VARIABLE
        PERL_VERSION_RESULT_VARIABLE
      ERROR_QUIET
      OUTPUT_STRIP_TRAILING_WHITESPACE
  )
  if(NOT PERL_VERSION_RESULT_VARIABLE AND NOT PERL_VERSION_OUTPUT_VARIABLE
MATCHES "^version='UNKNOWN'")
    string(REGEX REPLACE "version='([^']+)'.*" "\\1" PERL_VERSION_STRING
${PERL_VERSION_OUTPUT_VARIABLE})
  else()
    execute_process(
      COMMAND ${PERL_EXECUTABLE} -v
      OUTPUT_VARIABLE PERL_VERSION_OUTPUT_VARIABLE
      RESULT_VARIABLE PERL_VERSION_RESULT_VARIABLE
      ERROR_QUIET
      OUTPUT_STRIP_TRAILING_WHITESPACE
    )
    if(NOT PERL_VERSION_RESULT_VARIABLE AND PERL_VERSION_OUTPUT_VARIABLE
MATCHES "This is perl.*[ \\(]v([0-9\\._]+)[ \\)]")
      set(PERL_VERSION_STRING "${CMAKE_MATCH_1}")
    elseif(NOT PERL_VERSION_RESULT_VARIABLE AND
PERL_VERSION_OUTPUT_VARIABLE MATCHES "This is perl, version ([0-9\\._]+) +")
      set(PERL_VERSION_STRING "${CMAKE_MATCH_1}")
    endif()
  endif()
endif()

# Deprecated settings for compatibility with CMake1.4
set(PERL ${PERL_EXECUTABLE})

include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Perl
                                  REQUIRED_VARS PERL_EXECUTABLE
                                  VERSION_VAR PERL_VERSION_STRING)

mark_as_advanced(PERL_EXECUTABLE)

-- 
    Eugene
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lyx.org/pipermail/lyx-devel/attachments/20201115/2e6d46e9/attachment.html>


More information about the lyx-devel mailing list