2016-12-29 9 views
0

私はC++プロジェクトで開発しており、ビルド時にスクリプトを実行していくつかのファイルを生成したいとします。私はCMakeにはあまり馴染んでいないので、助けが必要です。CMake:プロジェクトをビルドするときにC++ファイルを実行する

スクリプトでは、プロジェクト内の.cppファイルを意味します。

私は、次を得るために管理している:

set(PrecisionCommand 
     ${CMAKE_SOURCE_DIR}/src/main/matlab/matlabprecision.cpp 
    ) 
    set(precision_output_files 
     ${CMAKE_SOURCE_DIR}/work/variables.txt 
    ) 

    add_custom_command(
     OUTPUT ${precision_output_files} 
     COMMAND ${PrecisionCommand} 
     COMMENT "Running ${PrecisionCommand}" 
    ) 


    add_custom_target(allocate_generate DEPENDS ${precision_output_files}) 

そして今何が起こるはmatlabprecision.cppファイルではなく実行されているよりも、テキストエディタで開かれていることです。これをどうやって解決するのですか?

+1

C++ファイルを「実行」することはできません(「スクリプト」とは呼ばないでください)。それをコンパイルして結果のバイナリを実行する必要があります。これは[XY問題](http://mywiki.wooledge.org/XyProblem)のようなにおいをします。本当に*達成したいのは何ですか? – Biffen

+0

あなたはそれがどのように実行されると思いますか? .cppファイルを最初にコンパイルして、実行可能ファイルを生成する必要があります。 – pSoLT

+0

私は、ローカルで何らかの方法でコンパイルできると思っていました。それはXY問題かもしれません。私はソース内に巨大な構造を持っています。各ビルド時に.txtファイルとしてエクスポートして保存したいのです(これは.cppファイルで実行したかったのです)。それは私がソフトウェアの周りにスクリプトを開発するためのメタデータを持つことができます。 –

答えて

1

.cファイルはスクリプトではなくソースファイルなので、直接実行することはできません。 COMMANDオプションは、実行のためにターゲット名を使用していること、

add_custom_command(
    OUTPUT ${precision_output_files} 
    COMMAND PrecisionCommand 
    COMMENT "Running PrecisionCommand" 

注:

add_executable(PrecisionCommand ${CMAKE_SOURCE_DIR}/src/main/matlab/matlabprecision.cpp) 

をし、その実行可能ファイルを実行します。ただし、最初の実行可能にコンパイルして実行可能ファイル。 CMakeのは、その使用法を理解し、:

  • は、実行可能ファイルへのパスにターゲット名を変換します。
  • 依存関係実行ファイルの作成と実行の間に適切なものを追加してください。 add_custom_commandに関するドキュメントから

COMMANDは、(ADD_EXECUTABLEによって作成された)実行可能なターゲットを指定した場合、それは自動的にビルド時に作成された実行可能ファイルの場所に置き換えられます。さらに、このカスタムコマンドを使用するターゲットの前に実行可能なターゲットが構築されるように、ターゲットレベルの依存関係が追加されます。

関連する問題