2016-12-11 11 views
0

Win7でcmakeバージョン3.7.0-rc3を使用すると、以下のコードをExternalProject_Add_Stepを使用して問題なく実行できます。問題を再現するExternalProject_Add_Stepエラーadd_custom_command与えられたAPPENDオプション付き出力

add_custom_command given APPEND option with output "ExternalProjects/Stamp/boost/boost-CONFIGURE" which is not already a custom command output. 

ここでは単純化のコード:しかしUbuntu16にcmakeのバージョン3.7.0を使用して、私はエラーを取得します。

ExternalProject_Add(
    boost 
    URL https://sourceforge.net/projects/boost/files/boost/1.62.0/boost_1_62_0.tar.gz/download 
    URL_HASH MD5=6f4571e7c5a66ccc3323da6c24be8f05 
    CONFIGURE_COMMAND "" 
    BUILD_COMMAND "" 
    INSTALL_COMMAND "" 
) 

ExternalProject_Add_Step(
    boost UNIX_CONFIGURE DEPENDEES DOWNLOAD DEPENDERS CONFIGURE 
    WORKING_DIRECTORY "<SOURCE_DIR>" COMMAND ./bootstrap.sh 
) 

犯人はDEPENDERS CONFIGUREと思われる。私はそれを取る場合、それは正常に動作します。しかし...私は、ステップの設定がこのカスタムステップに依存することを指定できるようにしたいと思います.Windowsではできますが、Ubuntuではできません。なぜどんなアイデア?

答えて

2

documentationには表示されませんが、大文字と小文字の区別が問題になります。変更あなたのCMakeLists.txtへ:ExternalProject_Add_Step()で "ダウンロード" と "configureが" 今downcasedされていることを

❯ cat ../CMakeLists.txt 
cmake_minimum_required(VERSION 3.7) 
include(ExternalProject) 
ExternalProject_Add(
    boost 
    URL https://sourceforge.net/projects/boost/files/boost/1.62.0/boost_1_62_0.tar.gz/download 
    URL_HASH MD5=6f4571e7c5a66ccc3323da6c24be8f05 
    CONFIGURE_COMMAND "" 
    BUILD_COMMAND "" 
    INSTALL_COMMAND "" 
    ) 

ExternalProject_Add_Step(
    boost UNIX_CONFIGURE DEPENDEES download DEPENDERS configure 
    WORKING_DIRECTORY "boost-prefix/src/boost/" COMMAND ./bootstrap.sh 
    ) 

注意してください。今、cmakeと正常に完了します。

❯ cmake .. 
-- The C compiler identification is AppleClang 8.0.0.8000042 
-- The CXX compiler identification is AppleClang 8.0.0.8000042 
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc 
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -- works 
-- Detecting C compiler ABI info 
-- Detecting C compiler ABI info - done 
-- Detecting C compile features 
-- Detecting C compile features - done 
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ 
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -- works 
-- Detecting CXX compiler ABI info 
-- Detecting CXX compiler ABI info - done 
-- Detecting CXX compile features 
-- Detecting CXX compile features - done 
-- Configuring done 
-- Generating done 
-- Build files have been written to: /Users/nega/foo/build 

❯ make 
Scanning dependencies of target boost 
[ 11%] Creating directories for 'boost' 
[ 22%] Performing download step (download, verify and extract) for 'boost' 
-- verifying file... 
     file='/Users/nega/foo/build/boost-prefix/src/boost_1_62_0.tar.gz' 
-- File already exists and hash match (skip download): 
    file='/Users/nega/foo/build/boost-prefix/src/boost_1_62_0.tar.gz' 
    MD5='6f4571e7c5a66ccc3323da6c24be8f05' 
-- extracting... 
    src='/Users/nega/foo/build/boost-prefix/src/boost_1_62_0.tar.gz' 
    dst='/Users/nega/foo/build/boost-prefix/src/boost' 
-- extracting... [tar xfz] 
-- extracting... [analysis] 
-- extracting... [rename] 
-- extracting... [clean up] 
-- extracting... done 
[ 33%] Performing UNIX_CONFIGURE step for 'boost' 
Building Boost.Build engine with toolset darwin... tools/build/src/engine/bin.macosxx86_64/b2 
Detecting Python version... 2.7 
Detecting Python root... /Users/nega/i3/virtenv 
Unicode/ICU support for Boost.Regex?... not found. 
Generating Boost.Build configuration in project-config.jam... 

Bootstrapping is done. To build, run: 

    ./b2 

To adjust configuration, edit 'project-config.jam'. 
Further information: 

    - Command line help: 
    ./b2 --help 

    - Getting started guide: 
    http://www.boost.org/more/getting_started/unix-variants.html 

    - Boost.Build documentation: 
    http://www.boost.org/build/doc/html/index.html 

[ 44%] No update step for 'boost' 
[ 55%] No patch step for 'boost' 
[ 66%] No configure step for 'boost' 
[ 77%] No build step for 'boost' 
[ 88%] No install step for 'boost' 
[100%] Completed 'boost' 
[100%] Built target boost 

今、あなたのビルドディレクトリのboost-prefix/src/boost-stampで見て:各ステップは、それにちなんで名付けられた「ファイルスタンプ」を持っているで

❯ v boost-prefix/src/boost-stamp      
total 32 
drwxr-xr-x 15 nega staff 510 Dec 20 12:29 ./ 
drwxr-xr-x 6 nega staff 204 Dec 20 12:28 ../ 
-rw-r--r-- 1 nega staff  0 Dec 20 12:29 boost-UNIX_CONFIGURE 
-rw-r--r-- 1 nega staff  0 Dec 20 12:29 boost-build 
-rw-r--r-- 1 nega staff  0 Dec 20 12:29 boost-configure 
-rw-r--r-- 1 nega staff  0 Dec 20 12:29 boost-done 
-rw-r--r-- 1 nega staff  0 Dec 20 12:28 boost-download 
-rw-r--r-- 1 nega staff  0 Dec 20 12:29 boost-install 
-rw-r--r-- 1 nega staff  0 Dec 20 12:28 boost-mkdir 
-rw-r--r-- 1 nega staff  0 Dec 20 12:29 boost-patch 
-rw-r--r-- 1 nega staff  0 Dec 20 12:29 boost-update 
-rw-r--r-- 1 nega staff 173 Dec 20 12:18 boost-urlinfo.txt 
-rw-r--r-- 1 nega staff 4424 Dec 20 12:18 download-boost.cmake 
-rw-r--r-- 1 nega staff 1611 Dec 20 12:28 extract-boost.cmake 
-rw-r--r-- 1 nega staff  0 Dec 20 12:28 verify-boost.cmake 

あなたは気付くでしょう。デフォルトのステップはすべて小文字で、カスタムステップ "UNIX_CONFIGURE"は定義したとおりに大文字です。ケースをカスタムステップとミックスすると、出力として出力されます。

❯ grep -i unix ../CMakeLists.txt 
    boost uNiX_CoNFiGuRe DEPENDEES download DEPENDERS configure 
❯ make | grep -i unix 
[ 33%] Performing uNiX_CoNFiGuRe step for 'boost' 
❯ find boost-prefix/src/boost-stamp | grep -i unix 
boost-prefix/src/boost-stamp/boost-uNiX_CoNFiGuRe 

また、makeの出力を見てください。

[ 22%] Performing download step (download, verify and extract) for 'boost' 
[....] 
[ 33%] Performing uNiX_CoNFiGuRe step for 'boost' 
[....] 
[ 44%] No update step for 'boost' 
[ 55%] No patch step for 'boost' 
[ 66%] No configure step for 'boost' 
[ 77%] No build step for 'boost' 
[ 88%] No install step for 'boost' 
[100%] Completed 'boost' 
[100%] Built target boost 

すべてのデフォルト手順は、小文字で参照されています。

CMakeののExternalProjectモジュールにまとめ

、小文字のステップをデフォルトに参照してください。

+1

実際のエラーメッセージに対処するため、 'ExternalProject _ *()'関数は他のCMakeコマンドのラッパーです。 'add_custom_command()'は別のカスタムコマンド "boost-CONFIGURE"に依存関係を追加しようとしていますが、実際の名前は "boost-configure"なので存在しません。 – nega

関連する問題