1
0
mirror of https://github.com/Kitware/CMake.git synced 2025-06-23 04:44:05 +08:00

481 Commits

Author SHA1 Message Date
Brad King
1d04d2ce36 VS: Refactor parsing of CMAKE_<LANG>_STANDARD_LIBRARIES
Parse the value as a command line string just as the MS CRT would.
This makes the VS generator behavior consistent with how the string
is used by the Ninja and Makefile generators.
2017-02-14 11:15:08 -05:00
Evgeny Fimochkin
5ba2c9e5e0 VS: Add support for ASM_NASM language
Fixes: #16469
2017-02-07 13:20:52 -05:00
Michael Stürmer
4bfb1249ed VS: removed usage of relative paths for C# targets in in-source builds 2017-01-18 15:53:40 +01:00
Michael Stürmer
90cb408323 VS: improve handling of source files with special extensions in .csproj
Mainly <Link> and <DependentUpon> tags are added to connect generated
and manually edited files. Special file extensions that are take care
of are:

 - .Designer.cs
 - .xaml.cs
 - .settings
 - .resx
 - .xaml
2017-01-18 15:51:22 +01:00
Michael Stürmer
a7dd8e6692 VS: added support for C# (for Visual Studio 2010, 2012, 2013, 2015) 2017-01-13 09:28:13 +01:00
Michael Stürmer
6fda6005b3 VS: renamed target property VS_USER_PROPS_CXX to VS_USER_PROPS 2017-01-13 09:27:21 +01:00
Michael Stürmer
55da7e501e VS: add support for .NET references with hint paths 2016-12-13 13:51:50 -05:00
Brad King
e9bd298a23 Merge topic 'target_project_type'
66bd8a3c cmVisualStudio10TargetGenerator: Prepare to handle C# projects
2016-12-02 09:54:23 -05:00
Michael Stürmer
66bd8a3cf2 cmVisualStudio10TargetGenerator: Prepare to handle C# projects
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
2016-12-01 10:36:43 -05:00
Michael Stürmer
163e801809 VS: Add target property VS_DEBUGGER_WORKING_DIRECTORY 2016-11-30 11:45:11 -05:00
Michael Stürmer
e390991846 VS: Add option to customize vcxproj user props file
Add a `VS_USER_PROPS_CXX` target property to set the user props file of
the generated `.vcxproj` file to be something other than the default
`$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props`.
2016-11-29 09:31:30 -05:00
Erik Christensen
7c8f7737fd VS: Disable project upgrade prompt on VS 2013 and above
When opening projects in Visual Studio that specify an older toolset
version, a prompt is displayed the first time asking the user whether to
upgrade the projects.  This is meant for project files that are
maintained manually and updated through the IDE.  For CMake-generated
projects this does not make sense, so add content to tell VS not to
upgrade.
2016-11-15 10:40:55 -05:00
Brad King
a0b159685e Merge topic 'vs_targets_file_as_library'
883bd34a VS: Treat libraries ending in `.targets` as msbuild imports
2016-11-11 10:44:20 -05:00
Soji Yamakawa
883bd34a1f VS: Treat libraries ending in .targets as msbuild imports
Generate `<Import Project="..." .../>` to import the `.targets` files
into `.vcxproj` files.

Closes: #16340
2016-11-09 16:19:07 -05:00
Zsolt Parragi
1e4bb35894 Add generator expression support to per-source COMPILE_FLAGS
This allows users to specify different genex-based compile flags for
each file in a target, e.g. compiling just a single file with `Od/Ox` in
release builds on Visual Studio.
2016-10-28 11:18:03 -04:00
Don Olmstead
e2ed9a7092 VS: Move toolset flag table lookup to global generator
Move `Get*FlagTable` methods to the global generator and have each VS
generator version pre-populate its default flag table.
2016-10-25 09:19:49 -04:00
Stephen Kelly
a49751fb2e cmState: Move TargetType enum to separate namespace 2016-10-19 15:40:58 +02:00
Brad King
a8513d8a80 Merge topic 'vs-host-x64-tools'
d079e71c VS: Provide an option to use x64 host tools
779939a0 Help: Document VS and Xcode toolset selection
2016-10-14 09:25:34 -04:00
Brad King
d079e71c29 VS: Provide an option to use x64 host tools
Visual Studio provides toolchains that are themselves built for 32-bit
or 64-bit host architectures.  By default it uses the 32-bit tools, but
it can be told to prefer the 64-bit tools on 64-bit hosts.  Extend the
`CMAKE_GENERATOR_TOOLSET` specification to provide a way to request
use of the 64-bit host tools.

Closes: #15622
2016-10-14 09:22:26 -04:00
Brad King
3b07c58dbd Merge topic 'vs15-separate-flag-table'
b1d67ae8 VS: Split flag table between v140 and v141 toolsets
2016-10-13 08:25:52 -04:00
Brad King
b1d67ae8a5 VS: Split flag table between v140 and v141 toolsets
In commit v3.7.0-rc1~156^2~1 (VS: Update v140 flag tables from VS 15
MSBuild files, 2016-09-02) we extended the v140 flag table with values
from the v141 toolset that comes with VS 15.  However, the v140 toolset
that comes with VS 14 does not have all of these entries and so the
flags just need to be passed without special mapping.  In order to
support both toolsets, split our CL flag table into separate copies for
each version and switch off the toolset name.

Closes: #16352
2016-10-10 11:43:39 -04:00
Roman Wüger
646d01da95 VS: Use absolute target-specific directory for resources.pri
The change in commit v3.7.0-rc1~219^2 (VS: Use target-specific directory
for `resources.pri`, 2016-08-25) incorrectly specifies a relative path
for the `ProjectPriFullPath` value.  Fix it to use an absolute path.

Issue: #16106
2016-10-05 09:21:58 -04:00
Brad King
b53a12c29c Merge topic 'vs-clang-llvm-support'
3f300b84 VS: Recognize VS/LLVM toolset names as Clang
2016-09-29 08:09:39 -04:00
Roman Wüger
3f300b84f3 VS: Recognize VS/LLVM toolset names as Clang
Update the toolset name matching added by commit v3.6.0-rc1~279^2~10
(VS: in Clang/C2 toolset, setup correct compiler settings, 2016-02-18)
to match VS/LLVM toolset names too.
2016-09-28 10:53:10 -04:00
Brad King
86578eccf2 Simplify CMake per-source license notices
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.
2016-09-27 15:14:44 -04:00
Stephen Kelly
839c65bca0 Convert: Move access to CurrentBinaryDirectory out of loops 2016-09-19 21:36:12 +02:00
Stephen Kelly
21b5fdf9a3 Convert: Avoid START_OUTPUT enum when converting to relative paths 2016-09-19 21:36:12 +02:00
Brad King
0ba0c67ba3 Merge topic 'vs14-debug-enum-older-toolsets'
9998774f VS: Fix VS 2015 .vcxproj debug setting for v80 toolset
2016-09-02 09:22:25 -04:00
Brad King
9998774f22 VS: Fix VS 2015 .vcxproj debug setting for v80 toolset
Closes: #16281
2016-09-01 14:50:04 -04:00
Brad King
e3a4c2e02c Merge topic 'cleanup-Convert'
4332131d Convert: Make variables a bit more clear
5aca066c Convert: Remove UNCHANGED enum value
146bf926 Convert: Remove 'FULL' conversion
58ba87f8 Convert: Replace Convert(FULL) with equivalent
e80314d7 Ninja: Replace ternary with if()
563ac22a Convert: Replace trivial conversion with new method
08be47cf Convert: Replace UNCHANGED conversions with new API call
564d3a1d Convert: Extract ConvertToRelativePath from Convert()
95a659f1 Convert: Replace FULL conversions with equivalent
a8c7ccb1 VS: Replace FULL/UNCHANGED conversion with equivalent
5ad25ef4 Convert: Remove NONE conversion
ac463841 Convert: Replace uses of Convert(NONE)
998d9ee9 VS: Replace variable with an if()
ee49f006 Makefiles: Replace ternaries with if()s
51f7dcb0 Makefiles: Inline MakeLauncher into only caller
ba4ba7c3 Makefiles: Simplify MakeLauncher return value
...
2016-08-30 09:29:53 -04:00
Brad King
ef58e97362 Merge topic 'vs-NsightTegra-empty-version'
1f4aeb17 VS: Fix out-of-bounds write on empty Nsight Tegra version
2016-08-30 09:29:49 -04:00
Stephen Kelly
08be47cf93 Convert: Replace UNCHANGED conversions with new API call 2016-08-27 15:26:37 +02:00
Fujii Hironori
1f4aeb1739 VS: Fix out-of-bounds write on empty Nsight Tegra version
In cmVisualStudio10TargetGenerator::cmVisualStudio10TargetGenerator,
wrote 0 to this->NsightTegraVersion[-1] if sscanf returns -1 which is
the case of GetNsightTegraVersion is empty.
2016-08-26 10:01:39 -04:00
Brad King
f325ae186d VS: Use target-specific directory for resources.pri
Set the `ProjectPriFullPath` field to a value that is unique to each
target and not shared with others in order to avoid collisions.

Closes: #16106
2016-08-25 09:17:17 -04:00
Brad King
702a548992 Merge topic 'vs14-debug-enum-older-toolsets'
038e3a4f cmVisualStudio10TargetGenerator: Run clang-format
2016-08-08 10:02:03 -04:00
Brad King
926886a41c VS: Fix VS 2015 .vcxproj debug setting for Windows7.1SDK toolset
Closes: #16213
2016-08-05 15:21:23 -04:00
Brad King
038e3a4f71 cmVisualStudio10TargetGenerator: Run clang-format 2016-08-05 15:20:20 -04:00
Brad King
b06118f8f1 Merge topic 'vs14-debug-enum-older-toolsets'
4ada475e VS: Fix VS 2015 .vcxproj debug setting for Windows7.1SDK toolset
2016-08-05 08:50:20 -04:00
Brad King
4ada475ef5 VS: Fix VS 2015 .vcxproj debug setting for Windows7.1SDK toolset
Closes: #16213
2016-08-04 11:40:09 -04:00
Benjamin Ballet
8aa97fba9e VS: Handle VS_GLOBAL_RootNamespace special case
Although we provide a `VS_GLOBAL_ROOTNAMESPACE` option to both set
the `RootNamespace` value and reference it, some users may try to
set `VS_GLOBAL_RootNamespace` to set `RootNamespace` as a variant
of the `VS_GLOBAL_<variable>` property.  In this case we still
need to add the reference to `$(RootNamespace)`.
2016-07-20 11:34:47 -04:00
Robert Dailey
a6290cffae VS: Add support for NATVIS files
Add an explicit `<Natvis>` element in VS project files for `*.natvis`
files.  These enable custom debug visualizers for project-specific
types.

Fixes #16043.
2016-07-15 10:36:21 -04:00
Brad King
4d3d28750e Merge topic 'vs14-debug-enum-older-toolsets'
36fc3a53 VS: Fix VS 2015 .vcxproj debug setting for v90 toolset (#15986)
2016-07-14 09:23:45 -04:00
Brad King
36fc3a5372 VS: Fix VS 2015 .vcxproj debug setting for v90 toolset (#15986) 2016-07-13 09:35:39 -04:00
Yury Zhuravlev
9da725cb00 Windows: Honor WINDOWS_EXPORT_ALL_SYMBOLS for executables with exports
For executables with ENABLE_EXPORTS set, export all symbols when
instructed to do so by WINDOWS_EXPORT_ALL_SYMBOLS.
2016-07-11 09:41:04 -04:00
Brad King
b5ec5b0901 Avoid using KWSys auto_ptr by adopting it ourselves
Replace use of cmsys::auto_ptr with a CM_AUTO_PTR macro that maps to
our own implementation adopted from the KWSys auto_ptr implementation.
Later we may be able to map CM_AUTO_PTR to std::auto_ptr on compilers
that do not warn about it.

Automate the client site conversions:

    git grep -l auto_ptr -- Source/ | grep -v Source/kwsys/ | xargs sed -i \
      's|cmsys::auto_ptr|CM_AUTO_PTR|;s|cmsys/auto_ptr.hxx|cm_auto_ptr.hxx|'
2016-06-29 09:47:58 -04:00
Brad King
c2c2a2f4c7 Merge topic 'vs-tool-override'
ed05f11d VS: Add a VS_TOOL_OVERRIDE source file property
2016-06-23 08:59:29 -04:00
Gilles Khouzam
35a6cac2d3 VS: Add VS_SDK_REFERENCES target property to reference external SDKs
Allow one to specify external SDK references such as
`Microsoft.AdMediatorWindows81, Version=1.0`.
2016-06-22 08:34:12 -04:00
Gilles Khouzam
ed05f11dd2 VS: Add a VS_TOOL_OVERRIDE source file property
This property allow to specify a specific Visual Studio tool for a
source file overriding the default tool behavior.  For example, a
`.resw` file being processed as a `PriResource` file.  This has the
advantage of being able to teach CMake to process new file types without
code modifications.
2016-06-20 10:46:14 -04:00
Brad King
6052e4b3bf Merge topic 'improve-character-find-and-replace'
5784747d Improve string find: prefer character overloads.
5cec953e Use std::replace for replacing chars in strings.
2a1a2033 cmExtraEclipseCDT4Generator: use std::replace.
34bc6e1f cmCTestScriptHandler: don't call find repeatedly.
2016-05-25 09:34:29 -04:00
Daniel Pfeifer
25d1ef6424 Use enums defined in cmOutputConverter using their fully qualified name.
Mostly automated:

values=("RelativeRoot" "NONE" "FULL" "HOME" "START" "HOME_OUTPUT" "START_OUTPUT"
        "OutputFormat" "UNCHANGED" "MAKERULE" "SHELL" "WATCOMQUOTE" "RESPONSE"
        "FortranFormat" "FortranFormatNone" "FortranFormatFixed" "FortranFormatFree")
for i in "${values[@]}"; do git grep -l cmLocalGenerator::$i | xargs sed -i "s|cmLocalGenerator::$i|cmOutputConverter::$i|g"; done
2016-05-25 09:20:09 -04:00