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

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

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

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

Q&A

解決済

1回答

1495閲覧

Cmakeで構文エラー(ptex)

sanasei

総合スコア13

CMake

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

0グッド

0クリップ

投稿2019/01/23 04:17

前提・実現したいこと

os:windows7,Visualstudio2013
上記で下記PBRTの開発環境を構築しようとしています
https://github.com/mmp/pbrt-v3/

発生している問題・エラーメッセージ

その過程で必要なライブラリのptexをgithubで持ってきて
https://github.com/wdas/ptex
Cmakeでconfigureを実行したのですが構文エラーで止まってしまいます

Cmake Error at src/etx/CmakeLists.txt:47 (string)
string sub-command REPLACE requires at least four arguments.
Cmake Error at src/etx/CmakeLists.txt:48 (string)
string sub-command REPLACE requires at least four arguments.
Cmake Error at src/etx/CmakeLists.txt:51 (message)
Could not determine the Ptex library version.

該当のソースコード

CmakeLists.txt

1cmake_minimum_required(VERSION 3.8.0) 2project(Ptex) 3 4option(PTEX_BUILD_STATIC_LIBS "Enable building Ptex static libraries" ON) 5option(PTEX_BUILD_SHARED_LIBS "Enable building Ptex shared libraries" ON) 6option(PRMAN_15_COMPATIBLE_PTEX "Enable PRMan 15 compatibility" OFF) 7 8if (DEFINED ENV{CXXFLAGS_STD}) 9 if ($ENV{CXXFLAGS_STD} STREQUAL "c++17") 10 set(CMAKE_CXX_STANDARD 17) 11 elseif ($ENV{CXXFLAGS_STD} STREQUAL "c++14") 12 set(CMAKE_CXX_STANDARD 14) 13 elseif ($ENV{CXXFLAGS_STD} STREQUAL "c++11") 14 set(CMAKE_CXX_STANDARD 11) 15 else () 16 set(CMAKE_CXX_STANDARD 98) 17 endif () 18else () 19 set(CMAKE_CXX_STANDARD 98) 20endif () 21set(CMAKE_CXX_EXTENSIONS OFF) 22set(CMAKE_INSTALL_MESSAGE LAZY) # Silence "Up-to-date:" install messages 23 24if (NOT DEFINED PTEX_SHA) 25 # Query git for current commit ID 26 execute_process( 27 COMMAND git rev-parse HEAD 28 WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} 29 OUTPUT_VARIABLE PTEX_SHA 30 OUTPUT_STRIP_TRAILING_WHITESPACE) 31endif () 32 33if (NOT DEFINED PTEX_VER) 34 # Get the version string from a "version" file or from git 35 if (EXISTS "${PROJECT_SOURCE_DIR}/version") 36 file(STRINGS "${PROJECT_SOURCE_DIR}/version" PTEX_VER) 37 else () 38 execute_process( 39 COMMAND git describe --first-parent --always HEAD 40 WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} 41 OUTPUT_VARIABLE PTEX_VER 42 OUTPUT_STRIP_TRAILING_WHITESPACE) 43 endif () 44endif () 45 46# Transform PTEX_VER into PTEX_MAJOR_VERSION and PTEX_MINOR_VERSION 47string(REPLACE "v" "" PTEX_VER_STRIPPED ${PTEX_VER}) # strip leading "v" 48string(REPLACE "." ";" PTEX_VER_LIST ${PTEX_VER_STRIPPED}) 49list(LENGTH PTEX_VER_LIST PTEX_VER_LENGTH) 50if (${PTEX_VER_LENGTH} LESS 2) 51 message(FATAL_ERROR "Could not determine the Ptex library version") 52endif () 53 54# The version variables are used to generate PtexVersion.h 55list(GET PTEX_VER_LIST 0 PTEX_MAJOR_VERSION) 56list(GET PTEX_VER_LIST 1 PTEX_MINOR_VERSION) 57 58include(GNUInstallDirs) 59include(CTest) 60include(FindZLIB) 61include(FindThreads) 62 63enable_testing() 64 65if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) 66 # Detect the build type from the $FLAVOR environment variable 67 # Default to optimized Release builds when unspecified. 68 if ("$ENV{FLAVOR}" MATCHES "debug") 69 set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "type of build" FORCE) 70 elseif ("$ENV{FLAVOR}" MATCHES "profile") 71 set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "type of build" FORCE) 72 else () 73 set(CMAKE_BUILD_TYPE "Release" CACHE STRING "type of build" FORCE) 74 endif () 75endif () 76 77if (NOT WIN32) 78 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic") 79endif () 80 81if (MSVC) 82 add_definitions( 83 # forcing value to bool 'true' or 'false' (performance warning) 84 /wd4800 85 # conversion from 'double' to 'float', possible loss of data 86 /wd4244 87 /D_CRT_SECURE_NO_WARNINGS 88 ) 89endif() 90 91if (${PRMAN_15_COMPATIBLE_PTEX}) 92 add_definitions(-DPTEX_NO_LARGE_METADATA_BLOCKS) 93endif () 94 95include_directories(src/ptex) 96 97add_subdirectory(src/ptex) 98add_subdirectory(src/utils) 99add_subdirectory(src/tests) 100add_subdirectory(src/doc) 101add_subdirectory(src/build) 102### 試したこと 103 104os:windows10,Visualstudio2015の端末でも同様の内容を行ったが変わらず 105 106### 補足情報(FW/ツールのバージョンなど) 107pbrt v3 108Cmake 3.13.3 109ptex Latest commit bbd3b40

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

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

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

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

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

guest

回答1

0

ベストアンサー

こんにちは。

まず、ソースは、<code>を押して出てくる '''と'''の間において下さい。でないと見づらいです。

さて、「stringコマンドは最低4つのパラメータが必要」というエラーですね。
stringコマンドは2つしかないので、この2つででていると思われます。
最初のstringコマンドの3つのパラメータは定数ですから、最後の${PTEX_VER}が空のためパラメータが3つしかないと判断しているのだろうと思います。

PTEX_VERはその直前で定義される筈ですが、その定義に失敗しているということになります。
その可能性としては、gitコマンドが動作しない環境でCMakeジェネレートしていることが考えられます。
GiHUbから clone ではなくzipで持ってきて解凍した、当該CMakeジェネレートしてるコンソールのPATHに git が通っていない等が考えられます。(PTEX_VER定義のために git コマンドを発行する可能性がありますので。)

投稿2019/01/23 05:22

編集2019/01/23 05:23
Chironian

総合スコア23272

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

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

sanasei

2019/01/23 07:19

回答ありがとうございます. ソースコードの件もアドバイスありがとうございます.気を付けます. >GiHUbから clone ではなくzipで持ってきて解凍 cloneでもってはきているのですが、cloneのあとメディアに圧縮し、 別の端末で解凍して使用しているため >当該CMakeジェネレートしてるコンソールのPATHに git が通っていない という可能性はありそうです コンソールのPATHでだめなら、 gitからCmakeまで同じ端末上でトライしてみます
sanasei

2019/01/24 05:15

結論から言えば下記構文を追加することでこの問題は無理やり解決させました. set PTEX_VER v1.3.2 別の問題が出ていますが、それはもう少し調べてから質問します. ただ、正攻法では解決できていないので教えてください >当該CMakeジェネレートしてるコンソールのPATHに git が通っていない これを解決する方法ですが 環境変数の「PATH」にgitのインストール先アドレスを追加 という方法でおっしゃっている内容ができたことになっていますか? 回答よろしくお願いします
Chironian

2019/01/24 07:42

なっている筈ですよ。そのコンソールで git --version などとしてgitが起動することを確認できれば大丈夫です。 VC++2017ですが、ptexのコンフィグをやってみました。PTEX_VERのところは通りました。 他にZLIB等いくつかのライブラリを要求するようで、それらを入れていないので私のところでは生成には通りませんでした。
sanasei

2019/01/24 12:21 編集

>当該CMakeジェネレートしてるコンソールのPATHに git が通っていない 上記のとおりでした。直接バージョン変数¥を更新しなくてもエラーが解消されました。 ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問