summaryrefslogtreecommitdiffstats
path: root/Source/cmVisualStudio10TargetGenerator.h
Commit message (Collapse)AuthorAgeFilesLines
* Genex: Enable COMPILE_LANGUAGE for INCLUDE_DIRECTORIES with VS and XcodeBrad King2018-01-121-12/+6
| | | | | | | | | | | | | | | The set of compile flags used for a target's C and C++ sources is based on the linker language. By default this is always the C++ flags if any C++ sources appear in the target, and otherwise the C flags. Therefore we can define the `COMPILE_LANGUAGE` generator expression in `INCLUDE_DIRECTORIES` to match the selected language. This is not exactly the same as for other generators, but is the best VS and Xcode can do. It is also sufficient for many use cases since the set of include directories for C and C++ is frequently similar but may be distinct from those for other languages like CUDA. Fixes: #17435
* Genex: Enable COMPILE_LANGUAGE for COMPILE_DEFINITIONS with VS and XcodeBrad King2018-01-121-0/+1
| | | | | | | | | | | | | | | The set of compile flags used for a target's C and C++ sources is based on the linker language. By default this is always the C++ flags if any C++ sources appear in the target, and otherwise the C flags. Therefore we can define the `COMPILE_LANGUAGE` generator expression in `COMPILE_DEFINITIONS` to match the selected language. This is not exactly the same as for other generators, but is the best VS and Xcode can do. It is also sufficient for many use cases since the set of definitions for C and C++ is frequently similar but may be distinct from those for other languages like CUDA. Issue: #17435
* cmVisualStudio10TargetGenerator: Factor out include dir computationBrad King2018-01-111-0/+3
|
* IWYU: Mark cmConfigure.h with pragma: keepDaniel Pfeifer2017-08-261-1/+1
| | | | Also remove `#include "cmConfigure.h"` from most source files.
* Vs: fix CSharp custom command by introducing inline MSBuild <Targets>sMichael Stürmer2017-06-221-0/+7
| | | | | | | | The custom command implementation is based on the Microsoft support article: https://docs.microsoft.com/en-us/visualstudio/msbuild/how-to-extend-the-visual-studio-build-process Fixes: #16960
* Vs: factor out computation of <Link> tag for CSharp source filesMichael Stürmer2017-06-221-0/+1
|
* Vs: refactor WriteCustomRule for preparation of CSharp supportMichael Stürmer2017-06-221-0/+4
|
* Merge topic 'vs_csharp_prop_for_all_extensions'Brad King2017-06-151-0/+5
|\ | | | | | | | | | | | | c90630c5 Vs: add support for VS_CSHARP_* target property for additional file extensions Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !961
| * Vs: add support for VS_CSHARP_* target property for additional file extensionsMichael Stürmer2017-06-131-0/+5
| | | | | | | | Fixes: #16726
* | VS: add target property VS_DOTNET_REFERENCEPROP_<refname>_TAG_<tagname>Michael Stürmer2017-06-131-0/+1
|/ | | | Fixes: #16689
* CUDA: Visual Studio now properly delays device linkingRobert Maynard2017-04-261-0/+6
|
* VS: Teach generators how to mark per-config source filesBrad King2017-04-131-0/+1
| | | | | | | | | | | | | Add internal infrastructure for looping over all sources for all configurations and generating each source with exclusion marks for configurations in which they do not participate. This does not yet make per-config sources available in general but does set up some of the needed infrastructure. Unfortunately doing this cleanly will require major refactoring of both the VS 7-9 generators and the VS 10+ generators (for separate reasons). Instead add some extra internal structures to carry information where we need it.
* Merge topic 'include-style'Brad King2017-04-131-1/+1
|\ | | | | | | | | | | | | | | | | 1d829c86 Use quotes for non-system includes 26ee9e42 CPack: drop CPack prefix for includes 5afac50f cmConfigure: Ensure separate include block in headers Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !691
| * Use quotes for non-system includesDaniel Pfeifer2017-04-111-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | Automate with: git grep -l '#include <cm_' -- Source \ | xargs sed -i 's/#include <\(cm_.*\)>/#include "\1"/g' git grep -l '#include <cmsys/' -- Source \ | xargs sed -i 's/#include <\(cmsys\/.*\)>/#include "\1"/g' git grep -l '#include <cm[A-Z]' -- Source \ | xargs sed -i 's/#include <\(cm[A-Z].*\)>/#include "\1"/g'
* | VS: Refactor loop over classified sourcesBrad King2017-04-111-2/+0
|/ | | | | Loop over all sources at once instead of looking up and looping over each kind of source separately.
* VS: Add basic infrastructure for CUDA generationBrad King2017-03-101-0/+5
| | | | Generate the `CudaCompile` elements in `.vcxproj` files.
* VS: Add support for ASM_NASM languageEvgeny Fimochkin2017-02-071-1/+8
| | | | Fixes: #16469
* VS: added support for C# (for Visual Studio 2010, 2012, 2013, 2015)Michael Stürmer2017-01-131-0/+1
|
* VS: add support for .NET references with hint pathsMichael Stürmer2016-12-131-0/+1
|
* cmVisualStudio10TargetGenerator: Prepare to handle C# projectsMichael Stürmer2016-12-011-1/+9
| | | | | | | | | | | Generalize some internal infrastructure to prepare for generating either `.vcxproj` or `.csproj` files. - Add member string for project file extension - Add member enum for project type - Add member flag for in-source build - Add member flag for managed build - Rename PathToVcxproj to PathToProjectFile
* iwyu: Fix VisualStudio specific issuesDaniel Pfeifer2016-11-281-8/+11
|
* Merge topic 'vs_targets_file_as_library'Brad King2016-11-111-1/+14
|\ | | | | | | | | 883bd34a VS: Treat libraries ending in `.targets` as msbuild imports
| * VS: Treat libraries ending in `.targets` as msbuild importsSoji Yamakawa2016-11-091-1/+14
| | | | | | | | | | | | | | Generate `<Import Project="..." .../>` to import the `.targets` files into `.vcxproj` files. Closes: #16340
* | VS: Move toolset flag table lookup to global generatorDon Olmstead2016-10-251-6/+0
|/ | | | | Move `Get*FlagTable` methods to the global generator and have each VS generator version pre-populate its default flag table.
* Simplify CMake per-source license noticesBrad King2016-09-271-11/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | Per-source copyright/license notice headers that spell out copyright holder names and years are hard to maintain and often out-of-date or plain wrong. Precise contributor information is already maintained automatically by the version control tool. Ultimately it is the receiver of a file who is responsible for determining its licensing status, and per-source notices are merely a convenience. Therefore it is simpler and more accurate for each source to have a generic notice of the license name and references to more detailed information on copyright holders and full license terms. Our `Copyright.txt` file now contains a list of Contributors whose names appeared source-level copyright notices. It also references version control history for more precise information. Therefore we no longer need to spell out the list of Contributors in each source file notice. Replace CMake per-source copyright/license notice headers with a short description of the license and links to `Copyright.txt` and online information available from "https://cmake.org/licensing". The online URL also handles cases of modules being copied out of our source into other projects, so we can drop our notices about replacing links with full license text. Run the `Utilities/Scripts/filter-notices.bash` script to perform the majority of the replacements mechanically. Manually fix up shebang lines and trailing newlines in a few files. Manually update the notices in a few files that the script does not handle.
* make sure to include cmConfigure.h before cmStandardIncludes.hDaniel Pfeifer2016-09-031-0/+2
|
* Revise C++ coding style using clang-formatKitware Robot2016-05-161-15/+12
| | | | | | | | | | | | | Run the `Utilities/Scripts/clang-format.bash` script to update all our C++ code to a new style defined by `.clang-format`. Use `clang-format` version 3.8. * If you reached this commit for a line in `git blame`, re-run the blame operation starting at the parent of this commit to see older history for the content. * See the parent commit for instructions to rebase a change across this style transition commit.
* Source: Stabilize include orderBrad King2016-04-291-0/+1
| | | | | Each source file has a logical first include file. Include it in an isolated block so that tools that sort includes do not move them.
* VS10: Port to cmGeneratorTarget.Stephen Kelly2015-10-241-3/+1
|
* VS: Add support for Windows 10 Universal (Store) ApplicationsGilles Khouzam2015-10-051-0/+7
| | | | | | | | | | | | | | | | Teach the VS 2015 generator to support WindowsStore 10.0 applications. Add target properties to customize them: * VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION: Specifies the minimum version of the OS that the project can target. * VS_DESKTOP_EXTENSIONS_VERSION, VS_MOBILE_EXTENSIONS_VERSIONS, VS_IOT_EXTENSIONS_VERSION: Add a reference to the version of the SDK specified to the target allowing to target the extended functionality in a universal project. * VS_IOT_STARTUP_TASK: Specifies that the target should be built as an IOT continuous background task.
* VS: Prevent generated "rule" files from causing rebuildsMike Pagel2015-09-281-0/+2
| | | | | | When we generate a ".rule" file to attach a custom command in a VS IDE project, set the file timestamp to be old enough to prevent the rule from re-running due to its timestamp.
* Add support for *.manifest source files with MSVC toolsBrad King2015-09-171-0/+1
| | | | | | | | Classify .manifest sources separately, add dependencies on them, and pass them to the MS manifest tool to merge with linker-generated manifest files. Inspired-by: Gilles Khouzam <gillesk@microsoft.com>
* VS: Do not accumulate configurations globally (#15577)Brad King2015-05-211-0/+1
| | | | | | | | | | | Drop the VS >= 7 generator's global Configurations member and instead lookup configurations using cmMakefile::GetConfigurations where needed. This avoids accumulating all CMAKE_CONFIGURATION_TYPES values ever encountered by a project() or enable_language() command and allows the final value to be used in each directory. We don't officially support per-directory CMAKE_CONFIGURATION_TYPES values but we certainly should not generate configurations not in the final value in the top level directory.
* VS: Add support for XAML source filesGilles Khouzam2015-04-031-0/+3
| | | | | | | | XAML files are by default of type Page in the vcxproj and can be overriden by setting the VS_XAML_TYPE property. The .cpp and .h file of the same name are automatically added as depending on the XAML file. New VSXaml test builds a basic XAML WindowsStore 8.1 app with VS2013.
* VS: Generate Nsight Tegra project revision numberBrad King2014-09-301-0/+1
| | | | | | Nsight Tegra 2.0 will be revision '8'. Generate this revision number and add a NsightTegraUpgradeOnceWithoutPrompt element to tell newer versions not to prompt when upgrading the generated project file.
* VS: Generate ANDROID_GUI executables as app packagesBrad King2014-09-301-0/+1
| | | | | | When an executable is marked with ANDROID_GUI, generate an AntBuild step in the .vcxproj file and point it at the directory found to contain AndroidManifest.xml. Assume it also contains build.xml.
* VS: Teach vcxproj generation about the Tegra-Android platformBrad King2014-09-291-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | Complete the basic implementation of the VS Tegra-Android generators by replacing parts of vcxproj files that are specific to MS tools with settings defined for the NVIDIA Nsight Tegra tools. Current limitations include: * We have no "flag table" so flags will be passed in the additional options fields instead of mapped to the vcxproj elements defined by Nsight Tegra msbuild platform definition files. * We have no interface to set the AndroidArch, AndroidStlType, or AndroidTargetAPI fields so defaults will be used. * The Nsight Tegra msbuild platform definition files do not provide a working "Utility" target type so for add_custom_target we need to use a "StaticLibrary" target type and leave out ClCompile rules. * There is also no target type for plain command-line executables so for add_executable we need to use a "DynamicLibrary" target. Full application bundles will likely require new CMake target properties (like WIN32_EXECUTABLE for Windows GUI executables).
* Merge topic 'vs-windows-apps'Brad King2014-09-021-0/+13
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 39fefde2 VS: Add test case for Windows Phone and Windows Store 89da8465 MSVC: Define 'WIN32' for Windows Store and Windows Phone ed7f085f Help: Add notes for topic 'vs-windows-apps' dd11ae8f VS: Do not compile C sources as WinRT (#15100) b8e40538 VS: Mark Windows Phone and Store targets as App Containers 0432f062 VS: Always ignore ole32 on Windows Phone 8.0 e6ff2f8b VS: Generate Windows Metadata for WinRT components ee48f4c7 VS: Generate Windows Phone and Windows Store projects as Unicode cb1aceed VS: Add VS_WINRT_COMPONENT property to enable CompileAsWinRT 401269e4 VS: Handle .pfx files explicitly in generator 23782171 VS: Handle AppxManifest sources explicitly in generator bc373c6d VS: Set Window Phone/Store app type in CMake-generated targets d89b2889 VS: Mark CMake-generated targets as Utility in .vcxproj files 03ad8f28 CMakeDetermineCompilerABI: Link with standard libraries on MSVC
| * VS: Do not compile C sources as WinRT (#15100)Brad King2014-09-021-0/+1
| | | | | | | | | | | | | | | | The MSVC /ZW flag is valid only for C++ sources. Whenever we enable CompileAsWinRT for the whole target, disable it for all C sources. Update the documentation of VS_WINRT_COMPONENT to drop the statement about undefined behavior for non-C++ sources, because it is now defined as expected.
| * VS: Mark Windows Phone and Store targets as App ContainersGilles Khouzam2014-09-021-0/+11
| | | | | | | | | | | | | | | | | | | | | | * Add AppContainerApplication to non-UTILITY targets * Generate app manifest and related files if project does not provide them. Place them in a per-target directory to avoid clashes. * Mark WinRT components with WinMDAssembly * Import Windows Phone 8.0 targets in .vcxproj files when necessary, and reference platform.winmd. Inspired-by: Paul Annetts <paul@lightunobscured.com>
| * VS: Handle .pfx files explicitly in generatorGilles Khouzam2014-08-211-0/+1
| | | | | | | | | | | | | | | | Teach cmGeneratorTarget to classify .pfx files as package certificate key files. Teach cmVisualStudio10TargetGenerator to write them as PackageCertificateKeyFile in .vcxproj files. Inspired-by: Minmin Gong <minmin.gong@gmail.com>
* | VS: Populate MASM tool build settings in .vcxproj filesBrad King2014-08-131-0/+6
| |
* | VS: Refactor include directory generation in .vcxproj filesBrad King2014-08-131-1/+0
|/ | | | | | | | Use the cmVisualStudioGeneratorOptions flag map to add the AdditionalIncludeDirectories element to the project file. Move appending of %(AdditionalIncludeDirectories) to the locations that populate the flag vectors instead of where they are written out.
* VS: Generate WindowsPhone and WindowsStore application typesGilles Khouzam2014-07-311-0/+1
| | | | | Generate the ApplicationType and ApplicationTypeRevision elements in .vcxproj files.
* VS: Refactor handling of "header" sources in VS >= 10Brad King2014-07-291-0/+1
| | | | | | Create a WriteHeaderSource method to handle writing of sources classified by cmGeneratorTarget as header files. This will be useful to add special VS-specific handling for some headers.
* VS: Refactor handling of "extra" sources in VS >= 10Brad King2014-07-291-0/+1
| | | | | | Create a WriteExtraSource method to handle writing of sources not classified by cmGeneratorTarget for any particular purpose. This will be useful to add special VS-specific handling for some sources.
* VS: Convert 'WriteSource' tool argument to std::stringBrad King2014-07-291-2/+2
|
* cmIDEOption: Store mapped flag values as a vector<string>Brad King2014-07-231-1/+2
| | | | | | | | Some FlagMap entries are ;-lists. Store values as vector<string> so that individual values may contain ';' characters. Delay the construction of the final ;-list until writing to the VS project file. With this approach the generated file may contain ;-separated values that contain encoded ';' characters.
* VS: Make MS-tool-specific options conditionalBrad King2014-07-171-0/+1
| | | | | | Make blocks adding MS-tool-specific options conditional on a new "MSTools" boolean member of cmVisualStudio10TargetGenerator. Hard-code the member to true for now to preserve existing behavior.
* VS: Fix handling of non-preprocessor flags in CMAKE_RC_FLAGSMartin Mitas2014-07-101-0/+4
| | | | | | | | Teach the VS >= 10 generator to honor flags other than -I and -D in the CMAKE_RC_FLAGS[_<CONFIG>] variable. Place them within the ResourceCompile .vcxproj element under AdditionalOptions. Also add a rudimentary flag map to map '-n' to 'NullTerminateStrings'.