質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CMake

CMakeはクロスプラットフォームで作動するオープンソースのビルドシステムです。コマンドライン又は組み込まれた開発環境で使うことができる元のmakefileとプロジェクトファイルを生成します。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

455閲覧

cmake connector/C++ ソース

kit_break

総合スコア14

CMake

CMakeはクロスプラットフォームで作動するオープンソースのビルドシステムです。コマンドライン又は組み込まれた開発環境で使うことができる元のmakefileとプロジェクトファイルを生成します。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2017/07/29 12:06

###実現したいこと
cmake を使ってソースコードから connector/C++ をビルドしたいです
###エラーコード
cmake3.9 GUI

Boost version: 1.64.0
BOOST_INCLUDE_DIRS=C:/Users//boost_1_64_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:742 (message):
Could not determine the MySQL Server version
Call Stack (most recent call first):
CMakeLists.txt:252 (INCLUDE)

Configuring incomplete, errors occurred!
See also "C:/Users//mysql-connector-c++-1.1.9/CMakeFiles/CMakeOutput.log".

現在出ているエラーコードです。内容からMysql のバージョンを読み込めていないのかなと思っています。
初歩的なことだと思うのですが、1日かけても解決できていません。

試したこと

CMakeLists.txt の設定を変更してみたりしましたが解決できていません。

###補足情報(言語/FW/ツール等のバージョンなど)
cmake3.9
eclipse C++ ver 4.4
mysql server 5.6

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ええっとFindMySQL.cmakeをみるとMYSQL_INCLUDE_DIRが正しく設定されていれば

c

1#include <mysql.h> 2#include <stdio.h> 3int main() { 4 printf("%s", MYSQL_SERVER_VERSION); 5}

の実行結果をパースしてMYSQL_VERSIONに設定してくれるようになっています。

その辺を踏まえ、FINDMYSQL_DEBUGONにしてその辺がどうなっているか確認してみてください。(ところでMYSQL_DIRまたはMYSQL_CONFIG_EXECUTABLEまたは、MYSQL_INCLUDE_DIRMYSQL_LIB_DIR、は指定していますよね?)

投稿2017/07/29 15:05

yumetodo

総合スコア5850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kit_break

2017/07/29 15:26

回答ありがとうございます。ですが、どのように設定すれば良いのかさっぱりで自分でごちゃごちゃ同じようなことをし続けている次第です。申し訳ありませんが具体的にどのように記述すればよいのでしょうか?
yumetodo

2017/07/29 16:25 編集

cmakeコマンドを叩くときに`-D<オプション名>=<値>` で渡せます。
kit_break

2017/07/29 16:42

ありがとうございます。ですが、実行した結果違うエラーが発生してしま子ました。 エラーコードを添付します For MinGW make to work correctly sh.exe must NOT be in your path. Run cmake from a shell that does not have sh.exe in your PATH. If you want to use a UNIX shell, then use MSYS Makefiles. Call Stack (most recent call first): CMakeLists.txt:36 (PROJECT) CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage -- Configuring incomplete, errors occurred! sh.exe がパスにあるとまずいみたいなことを書いてあるのですがパスを外せばいいのでしょうか?
kit_break

2017/07/29 18:22

sh.exe の原因はわかりましたが、 CMake Error at FindMySQL.cmake:742 (message): Could not determine the MySQL Server version Call Stack (most recent call first): CMakeLists.txt:252 (INCLUDE) は設定しても出てきてしまいます。 cmake -G"Eclipse CDT4 - MinGW Makefiles" -DCMAKE_ECLIPSE_VERSION=4.4 -DBOOST_ROOT:STRING="/usr/local/boost_1_64_0" -DMYSQL_INCLUDE_DIR="C:\Program Files\MySQL\MySQL_Server_5.6\include" -DMYSQL_LIB_DIR:STRING="C:\Program Files\MySQL\MySQL_Server_5.6\lib" このように書いているのですがまずいところはあるでしょうか? また、MYSQL_DIR や MYSQL_CONFIG_EXECUTABLE はどのディレクトリを指定すればよいのでしょう?
yumetodo

2017/07/30 00:19 編集

MYSQL_DIR - Set in environment or as parameter to "cmake", this is the top directory of the MySQL Server or Connector/C install MYSQL_INCLUDE_DIR - Set in environment or as parameter to "cmake", this is the include directory where to find the client library MYSQL_LIB_DIR - Set in environment or as parameter to "cmake", this is the library directory where to find the client library
yumetodo

2017/07/30 00:19

とあるのでMYSQLのlibやらヘッダーファイルがあるパスを渡せばいいんですね
kit_break

2017/07/30 00:48

度たび申し訳ありません。lib や ヘッダファイルを見直しているのですが DBG: Could not compile "getmysqlversion.c" CMake Error at FindMySQL.cmake:743 (message): Could not determine the MySQL Server version Call Stack (most recent call first): CMakeLists.txt:252 (INCLUDE) というエラーコードになりました。FindMySQL.cmake で作成した cファイルがコンパイルできていないようなのですがコンパイラの問題ですか?
yumetodo

2017/07/30 01:15 編集

MYSQL_INCLUDE_PATHをinclude pathに追加して(gccなら-Iオプション)先のソースを手動でコンパイルして問題の切り分けをしてください。 ex.)先のソースをgetmysqlversion.cとして保存した場合 $ gcc -std=c99 -I <MYSQL_INCLUDE_PATHに渡したパス> -Wall -Wextra getmysqlversion.c -o getmysqlversion.exe $ ./getmysqlversion.exe *パス区切り文字に注意してください
kit_break

2017/07/30 03:15

MYSQL_INCLUDE_PATH を見直してコマンドプロンプトで手動で実行ファイルが作成できversionを確認することができました。同じパスをcmake で指定しているのですがこちらではコンパイルできずエラーが発生してしまいます。権限の問題ですかね?
kit_break

2017/07/30 05:08

cmake の gui で MYSQL_VERSION を設定することでMYSQLのバージョンを読み取ることができるようになりました。ですが、まだエラーが発生するためビルドされません。一応エラーログを添付します gcc.exe: /MD: No such file or directory mingw32-make.exe[1]: *** [CMakeFiles/cmTC_b9507.dir/CheckFunctionExists.c.obj] Error 1 mingw32-make.exe[1]: *** Deleting file `CMakeFiles/cmTC_b9507.dir/CheckFunctionExists.c.obj' mingw32-make.exe[1]: Leaving directory `C:/Users/admin/Desktop/MYSQL_CONNECT/mysql-connector-c++-1.1.9/CMakeFiles/CMakeTmp' mingw32-make.exe: *** [cmTC_b9507/fast] Error 2 Determining if the function strtoull exists failed with the following output: Change Dir: C:/Users/admin/Desktop/MYSQL_CONNECT/mysql-connector-c++-1.1.9/CMakeFiles/CMakeTmp Run Build Command:"C:/Users/admin/Documents/pleiades/pleiades/eclipse/mingw/bin/mingw32-make.exe" "cmTC_af369/fast" C:/Users/admin/Documents/pleiades/pleiades/eclipse/mingw/bin/mingw32-make.exe -f CMakeFiles\cmTC_af369.dir\build.make CMakeFiles/cmTC_af369.dir/build mingw32-make.exe[1]: Entering directory `C:/Users/admin/Desktop/MYSQL_CONNECT/mysql-connector-c++-1.1.9/CMakeFiles/CMakeTmp' Building C object CMakeFiles/cmTC_af369.dir/CheckFunctionExists.c.obj C:\Users\admin\Documents\pleiades\pleiades\eclipse\mingw\bin\gcc.exe /MD -DCHECK_FUNCTION_EXISTS=strtoull -o CMakeFiles\cmTC_af369.dir\CheckFunctionExists.c.obj -c C:\Users\admin\Desktop\MYSQL_CONNECT\cmake-3.9.0-win32-x86\share\cmake-3.9\Modules\CheckFunctionExists.c gcc.exe: /MD: No such file or directory mingw32-make.exe[1]: *** [CMakeFiles/cmTC_af369.dir/CheckFunctionExists.c.obj] Error 1 mingw32-make.exe[1]: *** D ところどころに gcc.exe が見つからないと記載されているのですがこれが原因でしょうか?
yumetodo

2017/07/30 09:57

>gcc.exe: /MD: No such file or directory んあっ!?なんでgccなのにcl.exeのオプションが渡されているんだ・・・? なんか根本的におかしい・・・
kit_break

2017/07/30 11:42

やはりですか。。。 全部やり直してコマンドプロンプトからcmake したらビルドできました。 丁寧に説明していただいてありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問