6

ほとんどのc++プロジェクトでは、VisualStudioのデフォルトのディレクトリ構造とは異なるディレクトリ構造を使用したいと考えています。すなわち:

/project
    /build  # put visual studio soluation and project files
    /src  # only put the c++ header files and source files
    /bin  # put the target executable files
        /debug
        /release
    /tmp
        /debug
        /release

vs2010でソリューションを作成するたびに、これらのディレクトリ(OutputDirectoryなど)を構成しますが、今ではこれについて本当に退屈です。

それで、私の設定ファイルに従って自動的にvs2010ソリューションとプロジェクトファイルを生成するツールはありますか?そして、私の唯一の要件は、これらのディレクトリを設定することです。

4

2 に答える 2

5

次のCMakeListを使用して構造を実現できます。以下は、ファイルが次の場所にあることを前提としています.../project/CMakeLists.txt

cmake_minimum_required(VERSION 2.8) #every top-level project should start with this command; replace the version with the minimum you want to target
project(MyProjectName)

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)  # put .exe and .dll files here
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)  # put .so files here (if you ever build on Linux)
set(CMAKE_MODULE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)  # put .dll and .so files for MODULE targets here
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/lib)  # put .lib files here

# Note that for multi-configuration generators (like VS), the configuration name will be appended to the above directories automatically

# Now that the directories are set up, we can start defining targets

add_executable(MyExe src/myExe.cpp)
add_library(MyLib SHARED src/myDLL.cpp)

target_link_libraries(MyExe MyLib)

CMakeを呼び出すときは、出力ディレクトリを.../project/build(CMake GUIなどで)に設定します。コマンドラインから実行する場合は、次のようにします。

> cd .../project/build
> cmake .. -G "Visual Studio 10"

一部のジェネレーター(Eclipse)は、出力ディレクトリがソースディレクトリのサブディレクトリである場合にそれを好まないことに注意してください。このような場合は、ディレクトリを少し再構築することをお勧めします。

于 2013-03-27T09:14:25.437 に答える
2

このようなツールは、たとえばC#で自分でMicrosoft.Build.Construction作成できます。名前空間のクラスを見ると、プログラムでプロジェクトを作成するために作成されています。

ただし、よりシンプルで用途の広いオプションは、すべてのプロジェクトで同じプロパティシートを使用し、必要なすべてのディレクトリパスを設定することです。これには再利用可能なという大きな利点もあるため、出力ディレクトリを変更することにした場合でも、プロパティシートを参照するすべてのプロジェクトが自動的に影響を受けます。例えば:

<?xml version="1.0" encoding="utf-8"?> 
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <MyMainDir>$(ProjectPath)\..\</MyMainDir>
    <OutDir>$(MyMainDir)\bin\$(ConfigurationName)</OutDir>
    <IntDir>$(MyMainDir)\tmp\$(ConfigurationName)</IntDir>
  </PropertyGroup>
</Project>

ConfigurationNameこれにより、最初に「メインディレクトリ」、つまり質問の「プロジェクト」という名前のディレクトリが特定され、次にそれと現在の名前(デフォルトではDebugまたは)に基づいて出力ディレクトリと中間ディレクトリが設定されますRelease

これで、このプロパティシートをプロジェクトにインポートするだけで済みます。に移動し、プロジェクトView->Other Windows->Property Managerを右クリックして、を選択しますAdd Existing property Sheet<Import Project=....>または、プロジェクトファイルに手動で追加することもできます。

その間、すべてのプロジェクトが同じオプションを使用するように、プロパティシートにコンパイラ/リンカーオプションを追加することもできます。これには少し時間がかかりますが、プロジェクト設定で同じオプションを何度も変更する必要がないため、将来的にはかなりの時間を節約できます。

于 2013-03-27T08:16:22.753 に答える