Cmake のファイル ディレクトリの計画と設定

cmake は生成されたファイルの場所を設定します - プログラマーが求めた

この記事では主に、cmake の 4 つの変数の違いを分析します。

  1. CMAKE_ARCHIVE_OUTPUT_DIRECTORY: 静的ライブラリがデフォルトで保存されるフォルダーの場所。
  2. CMAKE_LIBRARY_OUTPUT_DIRECTORY: ダイナミック ライブラリがデフォルトで保存されるフォルダーの場所。
  3. LIBRARY_OUTPUT_PATH: ライブラリ ファイルを保存するデフォルトの場所。生成されたライブラリが静的ライブラリで、CMAKE_ARCHIVE_OUTPUT_DIRECTORY が指定されていない場合は、このディレクトリに保存されます。ダイナミック ライブラリも同様です。
  4. CMAKE_RUNTIME_OUTPUT_DIRECTORY: 実行可能ソフトウェアを格納するディレクトリ。

以上が結論ですが、理解できれば以降の実験は読む必要はありません。理解できない場合は、実験に基づいて理解してください。

.aプログラムのコンパイル中に Linux によって生成される便利なファイルには、最後にある静的ライブラリ ファイル、.so最後にある動的ライブラリ ファイル、および実行可能ファイルの 3 種類があります。以下では、スタンドを使用して上記の 4 つの変数の使用法を説明します。

次の構造のフォルダーを構築します:
.
§── CMakeLists.txt §──
アーカイブ
§── fun
│ §── CMakeLists.txt
│ └── fun.cpp
§── ライブラリ
§── 出力
└──ランタイムの内容は次のとおりです。
./CMakeListLists.txt

cmake_minimum_required(VERSION 3.1) 
project(TEST)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/archive)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/library)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/runtime)
set(LIBRARY_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/path)
add_subdirectory(fun)

fun/CMakeLists.txtの内容は次のとおりです。

cmake_minimum_required(VERSION 3.1) 
project(fun)
add_library(fun fun.cpp)

fun/fun.cppの内容は次のとおりです。

int add(int a, int b){return a+b;}
int main(){return 0;}

テストCMAKE_ARCHIVE_OUTPUT_DIRECTORY

  • を実行するとcmake .; makearchive以下にlibfun.a

  • ./CMakeLists.txtの3行目をコメントアウトして実行すると、 ;makepath下に。libfun.a

  • ./CMakeLists.txt3行目と6行目をコメントアウトして実行するとmakefun以下にlibfun.a

テストCMAKE_LIBRARY_OUTPUT_DIRECTORY

  • まず、fun/CMakeLists.txtの 3 行目を次のように変更します。add_library(fun SHARED fun.cpp)
  • 実行するとmakeディレクトリ内のファイルがlibrary表示されます(Mac OSシステムの場合は表示されます)。libfun.solibfun.dylib
  • ./CMakeLists.txtの4行目をコメントアウトして実行すると、 ;の下にmakeファイルが生成されていることがわかります。pathlibfun.so
  • ./CMakeLists.txt4行目と6行目をコメントアウトして実行するとmakefun以下にlibfun.so

テストCMAKE_RUNTIME_OUTPUT_DIRECTORY

  • まず、fun/CMakeLists.txtの 3 行目を次のように変更します。add_executable(exe_file fun.cpp)
  • Execute makeruntime以下にexe_file
  • ./CMakeLists.txtの5行目をコメントアウトして実行しmakeフォルダ配下exe_fileに作成します。fun

上記 3 つの実験を通じて、4 つの変数の役割を理解できるはずです。



著者:FoolishFlyFox
リンク:https://www.jianshu.com/p/599550afd28d
出典:Jianshu
著作権は著者に帰属します。商業的転載の場合は著者に連絡して承認を求め、非商業的転載の場合は出典を明記してください。

おすすめ

転載: blog.csdn.net/u013590327/article/details/123045977