レビュー
ソースファイルを追加すると、要約の前のノートでは、それが来るとき、ここを見て、私が使用している他の方法によって媒介される、で行かないヘッダファイルを追加し、この機能をaux_source_directory。
ファイルを追加* .cppファイルと* .hの
フォルダ構造
CMakeFile | - CMakeLists.txt | - main.cppに | --stdafx.h
CMakeLists.txt
1 #CMakeの最低限のバージョンが必要な 2 cmake_minimum_required(バージョン3.0 ) 3 4 #アイテム名 5 プロジェクト(CMakeFile) 6つの 7 #は、指定したディレクトリ内のすべての.cppと.hファイルを検索し、SC_FILESで指定された変数名置く 8(GLOBをFILEをSC_FILES " *の.cpp " " * .H " ) 。9 10 #は、ターゲットを生成指定 。11 add_executable($ {$ {PROJECT_NAMEをSC_FILESを}})
ソリューションをビルド
高度
多くの場合、ソースファイルの機能の一部を取得するから第三者が直接私たち自身のコードは、上記の直接導入として、フォルダ内に置かれますが、個人的にこれは、これらの文書の管理、特にいくつかの外部ソース・ファイルの特別に資するものであることを感じることができるのアプローチより多くの時間は、全体のフォルダにファイルが多すぎると、乱雑さを感じます。私は、関連するコードを以下のMD5(そこgithubの)を導入して、管理下の異なるフォルダに分け、機能することで、より午前:
フォルダ構造
CMakeFile | - 共通 | | - MD5 | | --md5。CPP | | - md5.h | - CMakeLists.txt | --main。CPP | --stdafx.h
CMakeLists.txtを変更
1 #CMakeの項で最も低いバージョン番号 2 cmake_minimum_required(バージョン3.0 ) 。3 。4 #プロジェクト名 。5 プロジェクト(CMakeFile) 。6 。7 #セットMD5コードファイルのパス 。8 SET(md5_file " ./common/md5/md5.cpp " " ./コモン/ MD5 / md5.h " ) 9つの 10 #は、指定したディレクトリ内のすべての.cppと.hファイルを検索し、SC_FILESで指定された変数名置く 11(GLOBのSC_FILESファイルを" * .cppファイル" " * .H 」) 12 13 #ターゲット生成指定 14 add_executable($ {$は{PROJECT_NAMEをSC_FILES}}} $ {md5_file)を
ここでは、パスに対応するコードファイルを設定する必要があり、パスが生成されたターゲットに追加最後の値を取る必要があります。
ソリューション世代以降
ここで、あなたはなく、パケットああ、私の強迫性障害では、溶液中、すでにサブフォルダの管理を実現するために保存されている問題、MD5コードファイルを見つけるだろうと約束していました。
そして、高度な、パケットのソース・ソリューション
私のOCDを治す、上記課題を解決するために、私が行って、手動CMakeのを見ました。オリジナルのスクリプトはただ、CMakeLists.txtに行を追加呼び出すsource_groupのライン上の機能を:
1 #CMakeの項で最も低いバージョン番号 2 cmake_minimum_required(バージョン3.0 ) 。3 。4 #プロジェクト名 。5 プロジェクト(CMakeFile) 。6 。7 #セットMD5コードファイルのパス 。8 SET(md5_file " ./common/md5/md5.cpp " " ./コモン/ MD5 / md5.h " ) 9つの 10 #は、指定したディレクトリ内のすべての.cppと.hファイルを検索し、SC_FILESで指定された変数名置く 11(GLOBのSC_FILESファイルを" * .cppファイル" " * .H 」) 12 13 グループへのMD5 MD5のソースパケットの# 14 source_group(FILES $ {} md5_file MD5) 15 16 #ターゲットを生成指定 。17 add_executable($ {$は{PROJECT_NAMEをSC_FILES}}} $ {md5_file)
再生成ソリューション後
再生成後に他の変更CMakeList.txtは、VSが解決策をリロードするように求められますが、コールのことに留意すべきであるsource_groupの機能は、ソリューションが自動的にロードされていないとVSは、プロジェクトを再度開く閉じる必要があります。