CMakeでVisual Studio IDE向けソースファイル設定を自在に制御!VS_SOURCE_SETTINGS_tool徹底解説
使用方法
このプロパティは、ターゲットに対して以下の形式で設定します。
set_property(TARGET ターゲット名 PROPERTIES VS_SOURCE_SETTINGS_tool "<tool>=<key1>=<value1>;<key2>=<value2>;...;<tool>=<key1>=<value1>;<key2>=<value2>;...>")
ここで、
<value>
は、プロパティ値です。<key>
は、設定するプロパティ名です。Visual Studio IDEでは、以下のプロパティがサポートされています。- IncludePath: インクルードパスのリスト
- LibraryPath: ライブラリパスのリスト
- PreprocessorDefinitions: プリプロセッサ定義のリスト
- AdditionalIncludeDirectories: 追加のインクルードディレクトリのリスト
- AdditionalLibraryDirectories: 追加のライブラリディレクトリのリスト
- PreprocessorDefinitions: 追加のプリプロセッサ定義のリスト
<tool>
は、設定を適用するツール名です。Visual Studio IDEでは、以下のツールがサポートされています。- C++: cl.exe
- C: cl.exe
- MIDL: midl.exe
- RC: rc.exe
- ASM: masm.exe
- LINK: link.exe
<ターゲット名>
は、設定を適用するターゲットの名前です。
例
以下の例では、mytarget
ターゲットに対して、C++ コンパイラ (cl.exe
) の設定を指定します。
set_property(TARGET mytarget PROPERTIES VS_SOURCE_SETTINGS_tool "cl.exe;IncludePath=C:/include;LibraryPath=C:/lib")
この例では、Visual Studio IDEは mytarget
ターゲットのソースファイルをコンパイルする際に、以下の設定を使用します。
- ライブラリパス:
C:/lib
- インクルードパス:
C:/include
- VS_SOURCE_SETTINGS_tool プロパティは、Visual Studio 2010 以降でのみサポートされます。
- 同じツールの設定を複数指定するには、同じ
tool
を使用して複数のkey=...
ペアを指定します。 - 複数のツールに対して設定を指定するには、セミコロン (;) で区切って複数の
tool=...
ペアを指定します。
cmake_minimum_required(VERSION 3.10)
project(myproject)
add_executable(mytarget mytarget.cpp)
set_property(TARGET mytarget PROPERTIES VS_SOURCE_SETTINGS_tool "cl.exe;IncludePath=C:/include;LibraryPath=C:/lib;cl.exe;PreprocessorDefinitions=DEBUG;_DEBUG")
このコードは、以下の操作を行います。
- CMake の最小バージョンを 3.10 に設定します。
myproject
という名前のプロジェクトを作成します。mytarget.cpp
という名前のソースファイルからmytarget
という名前の実行可能ファイルを作成します。mytarget
ターゲットに対して、以下の Visual Studio IDE 向けのソースファイル設定を指定します。- C++ コンパイラ (
cl.exe
) のインクルードパスをC:/include
に設定します。 - C++ コンパイラ (
cl.exe
) のライブラリパスをC:/lib
に設定します。 - C++ コンパイラ (
cl.exe
) のプリプロセッサ定義をDEBUG;_DEBUG
に設定します。
- C++ コンパイラ (
このコードを実行すると、Visual Studio IDE で myproject
プロジェクトを開くと、以下の設定が適用されます。
mytarget.cpp
ファイルをコンパイルする際に、DEBUG
と_DEBUG
というマクロが定義されます。mytarget.cpp
ファイルをコンパイルする際に、C:/include
ディレクトリとC:/lib
ディレクトリが検索されます。
このコードはあくまで一例であり、プロジェクトのニーズに合わせて設定を調整する必要があります。
- このコードでは、Visual Studio 2019 を使用することを想定しています。Visual Studio の他のバージョンを使用している場合は、設定を調整する必要がある場合があります。
- このコードでは、
mytarget.cpp
ファイルが単一のソースファイルであることを想定しています。複数のソースファイルからなるプロジェクトの場合は、それぞれのソースファイルに対して個別に設定を指定する必要があります。
個別の CMake プロパティを使用する
"VS_SOURCE_SETTINGS_tool" プロパティを使用する代わりに、個別の CMake プロパティを使用して Visual Studio IDE 向けのソースファイル設定を指定することができます。以下の表は、"VS_SOURCE_SETTINGS_tool" プロパティで設定できるプロパティと、それに相当する個別の CMake プロパティを示しています。
VS_SOURCE_SETTINGS_tool プロパティ | 個別の CMake プロパティ |
---|---|
IncludePath | CMAKE_INCLUDE_PATH |
LibraryPath | CMAKE_LIBRARY_PATH |
PreprocessorDefinitions | CMAKE_PREPROCESSOR_DEFINITIONS |
AdditionalIncludeDirectories | CMAKE_INCLUDE_DIRS |
AdditionalLibraryDirectories | CMAKE_LIBRARY_DIRS |
例
以下の例では、mytarget
ターゲットに対して、C++ コンパイラ (cl.exe
) の設定を個別の CMake プロパティを使用して指定します。
cmake_minimum_required(VERSION 3.10)
project(myproject)
add_executable(mytarget mytarget.cpp)
set(CMAKE_INCLUDE_PATH "C:/include")
set(CMAKE_LIBRARY_PATH "C:/lib")
set(CMAKE_PREPROCESSOR_DEFINITIONS "DEBUG;_DEBUG")
target_link_libraries(mytarget some_library)
このコードは、"VS_SOURCE_SETTINGS_tool" プロパティを使用する代わりに、個別の CMake プロパティを使用して以下の設定を指定しています。
- C++ コンパイラ (
cl.exe
) のプリプロセッサ定義をDEBUG;_DEBUG
に設定します。 - C++ コンパイラ (
cl.exe
) のライブラリパスをC:/lib
に設定します。 - C++ コンパイラ (
cl.exe
) のインクルードパスをC:/include
に設定します。
Visual Studio プロジェクトファイルを使用する
Visual Studio プロジェクトファイル (.vcproj) を手動で編集して、Visual Studio IDE 向けのソースファイル設定を指定することもできます。ただし、この方法は時間と労力のかかる方法であり、CMake を使用する場合よりも柔軟性が低くなります。
Visual Studio IDE を直接使用する
Visual Studio IDE を直接使用して、Visual Studio IDE 向けのソースファイル設定を指定することもできます。ただし、この方法は CMake を使用する場合よりも煩雑であり、プロジェクトの規模が大きくなると管理が難しくなります。
"VS_SOURCE_SETTINGS_tool" の代替方法の選択
"VS_SOURCE_SETTINGS_tool" の代替方法を選択する際には、以下の点を考慮する必要があります。
- チームのワークフロー
- 開発者のスキルと経験
- プロジェクトの規模と複雑性