Bug #78087 include could not find load file: mysql_version_info.cmake
Submitted: 15 Aug 2015 22:08 Modified: 17 Aug 2015 22:34
Reporter: Сергей Соболев Email Updates:
Status: Can't repeat Impact on me:
None 
Category:Connector / C++ Severity:S3 (Non-critical)
Version:1.1.6 OS:Windows
Assigned to: CPU Architecture:Any

[15 Aug 2015 22:08] Сергей Соболев
Description:
trying to build C++ connector 1.1.6 from source code 
Windows (Architecture Independent)
(mysql-connector-c++-1.1.6.zip)

but get error while genereting project file in CMake 3.0.2:

CMake Error at FindMySQL.cmake:578 (include):
  include could not find load file:

    E:/Distr/SQL servers/mysql-connector-c++-1.1.6 bin/cmake/mysql_version_info.cmake
Call Stack (most recent call first):
  CMakeLists.txt:217 (INCLUDE)

How to repeat:
try to generete project in CMake for VS 2013 x64

Suggested fix:
put cmake/mysql_version_info.cmake
int source code archive
[16 Aug 2015 0:50] MySQL Verification Team
c:\mysql-connector-c++-1.1.6>type short.cmd
@ECHO OFF
echo %~s1
c:\mysql-connector-c++-1.1.6>short "C:\Program Files\MySQL\MySQL Server 5.6"
C:\PROGRA~1\MySQL\MYSQLS~1.6

c:\mysql-connector-c++-1.1.6>set MYSQL_DIR=C:\PROGRA~1\MySQL\MYSQLS~1.6

c:\mysql-connector-c++-1.1.6>cmake -DBOOST_ROOT=C:\boost_1_58_0 -G "Visual Studio 12 2013"
-- Environment compile flags:
-- Environment link flags:
-- Boost version: 1.58.0
-- BOOST_INCLUDE_DIRS=C:/boost_1_58_0
-- You will link dynamically to the MySQL client library (set with -DMYSQLCLIENT_STATIC_LINKING=<bool>)
-- Searching for dynamic libraries with the base name(s) "libmysql"
-- MySQL client environment/cmake variables set that the user can override
--   MYSQL_DIR                   : C:/PROGRA~1/MySQL/MYSQLS~1.6
--   MYSQL_INCLUDE_DIR           : C:/PROGRA~1/MySQL/MYSQLS~1.6/include
--   MYSQL_LIB_DIR               : C:/Program Files/MySQL/MySQL Server 5.6/lib
--   MYSQL_CONFIG_EXECUTABLE     :
--   MYSQL_CXX_LINKAGE           :
--   MYSQL_CFLAGS                :
--   MYSQL_CXXFLAGS              :
--   MYSQLCLIENT_STATIC_LINKING  :
--   MYSQLCLIENT_NO_THREADS      :
-- MySQL client optional environment/cmake variables set by the user
--   MYSQL_EXTRA_LIBRARIES       :
--   MYSQL_LINK_FLAGS            :
-- MySQL client settings that the user can't override
--   MYSQL_VERSION               :
--   MYSQL_NUM_VERSION           :
--   MYSQL_LIB                   : C:/Program Files/MySQL/MySQL Server 5.6/lib/libmysql.lib
--   MYSQL_LIBRARIES             : C:/Program Files/MySQL/MySQL Server 5.6/lib/libmysql.lib
-- Installation path is: C:/Program Files (x86)/MySQL/ConnectorCPP   (overwrite with -DCMAKE_INSTALL_PREFIX=/your/path)
-- Looking for include file stdint.h
-- Looking for include file stdint.h - found
-- Looking for include file inttypes.h
-- Looking for include file inttypes.h - found
-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Check size of int8_t
-- Check size of int8_t - done
-- Check size of uint8_t
-- Check size of uint8_t - done
-- Check size of int16_t
-- Check size of int16_t - done
-- Check size of uint16_t
-- Check size of uint16_t - done
-- Check size of int32_t
-- Check size of int32_t - done
-- Check size of uint32_t
-- Check size of uint32_t - done
-- Check size of int64_t
-- Check size of int64_t - done
-- Check size of uint64_t
-- Check size of uint64_t - done
-- Check size of __int8
-- Check size of __int8 - done
-- Check size of unsigned __int8
-- Check size of unsigned __int8 - done
-- Check size of __int16
-- Check size of __int16 - done
-- Check size of unsigned __int16
-- Check size of unsigned __int16 - done
-- Check size of __int32
-- Check size of __int32 - done
-- Check size of unsigned __int32
-- Check size of unsigned __int32 - done
-- Check size of __int64
-- Check size of __int64 - done
-- Check size of unsigned __int64
-- Check size of unsigned __int64 - done
-- Looking for strtold
-- Looking for strtold - found
-- Looking for strtol
-- Looking for strtol - found
-- Looking for strtoll
-- Looking for strtoll - found
-- Looking for strtoul
-- Looking for strtoul - found
-- Looking for strtoull
-- Looking for strtoull - found
-- Looking for strtoimax
-- Looking for strtoimax - found
-- Looking for strtoumax
-- Looking for strtoumax - found
-- Using static libmysql binding
-- DT_RPATH will not be set
-- Configuring driver
-- MySQL dynamic load test library: C:/Program Files/MySQL/MySQL Server 5.6/lib/libmysql.dll
-- Configuring examples
-- Configuring test cases
-- Configuring tests framework lib
-- Configuring C/J junit tests port
-- MySQL dynamic load test library: C:/Program Files/MySQL/MySQL Server 5.6/lib/libmysql.dll
-- Configuring unit tests
-- Configuring unit tests - examples
-- Configuring unit tests - connection
-- Configuring unit tests - databasemetadata
-- Configuring unit tests - resultsetmetadata
-- Configuring unit tests - resultset
-- Configuring unit tests - savepoint
-- Configuring unit tests - preparedstatement
-- Configuring unit tests - parametermetadata
-- Configuring unit tests - art_resultset
-- Configuring unit tests - statement
-- Configuring unit tests - uri
-- Configuring unit tests - variant
-- Configuring performance test - statement
-- Configuring bugs test cases - unsorted
-- Configuring unit tests - group template_bug
-- Configuring done
CMake Warning (dev) in driver/CMakeLists.txt:
  Policy CMP0022 is not set: INTERFACE_LINK_LIBRARIES defines the link
  interface.  Run "cmake --help-policy CMP0022" for policy details.  Use the
  cmake_policy command to set the policy and suppress this warning.

  Target "mysqlcppconn" has an INTERFACE_LINK_LIBRARIES property which
  differs from its LINK_INTERFACE_LIBRARIES properties.

  INTERFACE_LINK_LIBRARIES:

    mysqlclient;ws2_32

  LINK_INTERFACE_LIBRARIES:

This warning is for project developers.  Use -Wno-dev to suppress it.

-- Generating done
-- Build files have been written to: C:/mysql-connector-c++-1.1.6

c:\mysql-connector-c++-1.1.6>dir *.sln
 Volume in drive C has no label.
 Volume Serial Number is 484B-43B0

 Directory of c:\mysql-connector-c++-1.1.6

08/15/2015  09:42 PM            43,299 MYSQLCPPCONN.sln
               1 File(s)         43,299 bytes
               0 Dir(s)  1,115,867,803,648 bytes free
[16 Aug 2015 8:21] Сергей Соболев
I forget to mention that I used cmake-gui.
I tried console version cmake and it generate project without error.
with full or short path to my sql.

but cmake-gui still get error even with short path to my sql.

previos C++ connector version I built with cmake-gui.
[16 Aug 2015 13:19] Сергей Соболев
some wierd things happend. 
if I run console cmake after unsuccesful cmake-gui, sometimes it build solution successful.
but if I run it on pure source dirrectory, id doesn't work:

The C compiler identification is MSVC 18.0.40629.0
The CXX compiler identification is MSVC 18.0.40629.0
Check for working C compiler using: Visual Studio 12 2013 Win64
Check for working C compiler using: Visual Studio 12 2013 Win64 -- works
Detecting C compiler ABI info
Detecting C compiler ABI info - done
Check for working CXX compiler using: Visual Studio 12 2013 Win64
Check for working CXX compiler using: Visual Studio 12 2013 Win64 -- works
Detecting CXX compiler ABI info
Detecting CXX compiler ABI info - done
Detecting CXX compile features
Detecting CXX compile features - done
Environment compile flags:   
Environment link flags: 
Boost version: 1.59.0
BOOST_INCLUDE_DIRS=C:/boost_1_59_0
You will link dynamically to the MySQL client library (set with -DMYSQLCLIENT_STATIC_LINKING=<bool>)
Searching for dynamic libraries with the base name(s) "libmysql"
CMake Error at FindMySQL.cmake:578 (include):
  include could not find load file:

    E:/Distr/SQL servers/mysql-connector-c++-1.1.6/cmake/mysql_version_info.cmake
Call Stack (most recent call first):
  CMakeLists.txt:217 (INCLUDE)

MySQL client environment/cmake variables set that the user can override
  MYSQL_DIR                   : c:/PROGRA~1/MySQL/MYSQLS~1.7
  MYSQL_INCLUDE_DIR           : c:/PROGRA~1/MySQL/MYSQLS~1.7/include
  MYSQL_LIB_DIR               : c:/Program Files/MySQL/MySQL Server 5.7/lib
  MYSQL_CONFIG_EXECUTABLE     : 
  MYSQL_CXX_LINKAGE           : 
  MYSQL_CFLAGS                : 
  MYSQL_CXXFLAGS              : 
  MYSQLCLIENT_STATIC_LINKING  : 
  MYSQLCLIENT_NO_THREADS      : 
MySQL client optional environment/cmake variables set by the user
  MYSQL_EXTRA_LIBRARIES       : 
  MYSQL_LINK_FLAGS            : 
MySQL client settings that the user can't override
  MYSQL_VERSION               : 
  MYSQL_NUM_VERSION           : 
  MYSQL_LIB                   : c:/Program Files/MySQL/MySQL Server 5.7/lib/libmysql.lib
  MYSQL_LIBRARIES             : c:/Program Files/MySQL/MySQL Server 5.7/lib/libmysql.lib
Installation path is: C:/Program Files/MySQL/ConnectorCPP   (overwrite with -DCMAKE_INSTALL_PREFIX=/your/path)
Looking for include file stdint.h
Looking for include file stdint.h - found
Looking for include file inttypes.h
Looking for include file inttypes.h - found
Looking for sys/types.h
Looking for sys/types.h - found
Looking for stddef.h
Looking for stddef.h - found
Check size of int8_t
Check size of int8_t - done
Check size of uint8_t
Check size of uint8_t - done
Check size of int16_t
Check size of int16_t - done
Check size of uint16_t
Check size of uint16_t - done
Check size of int32_t
Check size of int32_t - done
Check size of uint32_t
Check size of uint32_t - done
Check size of int64_t
Check size of int64_t - done
Check size of uint64_t
Check size of uint64_t - done
Check size of __int8
Check size of __int8 - done
Check size of unsigned __int8
Check size of unsigned __int8 - done
Check size of __int16
Check size of __int16 - done
Check size of unsigned __int16
Check size of unsigned __int16 - done
Check size of __int32
Check size of __int32 - done
Check size of unsigned __int32
Check size of unsigned __int32 - done
Check size of __int64
Check size of __int64 - done
Check size of unsigned __int64
Check size of unsigned __int64 - done
Looking for strtold
Looking for strtold - found
Looking for strtol
Looking for strtol - found
Looking for strtoll
Looking for strtoll - found
Looking for strtoul
Looking for strtoul - found
Looking for strtoull
Looking for strtoull - found
Looking for strtoimax
Looking for strtoimax - found
Looking for strtoumax
Looking for strtoumax - found
Using static libmysql binding
DT_RPATH will not be set
Configuring driver
MySQL dynamic load test library: c:/Program Files/MySQL/MySQL Server 5.7/lib/libmysql.dll
Configuring examples
Configuring test cases
Configuring tests framework lib
Configuring C/J junit tests port
MySQL dynamic load test library: c:/Program Files/MySQL/MySQL Server 5.7/lib/libmysql.dll
Configuring unit tests
Configuring unit tests - examples
Configuring unit tests - connection
Configuring unit tests - databasemetadata
Configuring unit tests - resultsetmetadata
Configuring unit tests - resultset
Configuring unit tests - savepoint
Configuring unit tests - preparedstatement
Configuring unit tests - parametermetadata
Configuring unit tests - art_resultset
Configuring unit tests - statement
Configuring unit tests - uri
Configuring unit tests - variant
Configuring performance test - statement
Configuring bugs test cases - unsorted
Configuring unit tests - group template_bug
Configuring incomplete, errors occurred!
See also "E:/Distr/SQL servers/mysql-connector-c++-1.1.6/CMakeFiles/CMakeOutput.log".
[17 Aug 2015 22:34] Сергей Соболев
what's purpose of code below in FindMySQL.cmake? if I delete it, cmake works fine.
MYSQL_INCLUDE_DIR is set
MYSQL_NUM_VERSION is not set
so it should run, but you don't get error about missing mysql_version_info.cmake
why?

if (MYSQL_INCLUDE_DIR AND NOT MYSQL_NUM_VERSION)
  try_run(RUN_RESULT_VAR COMPILE_RESULT_VAR
    "${CMAKE_BINARY_DIR}"
    "${CMAKE_SOURCE_DIR}/cmake/getmysqlversion.c"
    CMAKE_FLAGS -DINCLUDE_DIRECTORIES:STRING=${MYSQL_INCLUDE_DIR}
    ARGS "${CMAKE_BINARY_DIR}/cmake/mysql_version_info.cmake"
         "MYSQL_SERVER_VERSION"
         "MYSQL_VERSION_ID"
         "LIBMYSQL_VERSION"
         "LIBMYSQL_VERSION_ID")

    if(COMPILE_RESULT_VAR AND RUN_RESULT_VAR)
      include(${CMAKE_BINARY_DIR}/cmake/mysql_version_info.cmake)
      if(NOT LIBMYSQL_CPP_VERSION STREQUAL "")
        set(MYSQL_VERSION "${LIBMYSQL_CPP_VERSION}")
      elseif(NOT MYSQL_CPP_SERVER_VERSION STREQUAL "")
        set(MYSQL_VERSION "${MYSQL_CPP_SERVER_VERSION}")
      endif(NOT LIBMYSQL_CPP_VERSION STREQUAL "")
      string(REGEX MATCHALL "([0-9]+.[0-9]+.[0-9]+)" MYSQL_VERSION "${MYSQL_VERSION}")

      if(LIBMYSQL_CPP_VERSION_ID)
        set(MYSQL_NUM_VERSION ${LIBMYSQL_CPP_VERSION_ID})
      elseif(MYSQL_CPP_SERVER_VERSION_ID)
        set(MYSQL_NUM_VERSION ${MYSQL_CPP_SERVER_VERSION_ID})
      endif(LIBMYSQL_CPP_VERSION_ID)
    endif(COMPILE_RESULT_VAR AND RUN_RESULT_VAR)
endif()