summaryrefslogtreecommitdiffstats
path: root/Source/cmTargetLinkLibrariesCommand.cxx
Commit message (Collapse)AuthorAgeFilesLines
* Centralize maintenance of usage requirement include directoriesStephen Kelly2013-05-061-8/+0
| | | | | | Maintain a target's internal list of usage requirement include directories whenever the LINK_LIBRARIES property is set by either target_link_libraries or set_property.
* Don't populate INTERFACE includes and defines properties in tll.Stephen Kelly2013-02-131-44/+0
| | | | | | | | | This is a partial revert of commit 77cecb77 (Add includes and compile definitions with target_link_libraries., 2012-11-05). As the interface includes and defines are now determined by the link closure, there is no need to populate the corresponding properties explicitly.
* Use the link information as a source of compile definitions and includes.Stephen Kelly2013-02-131-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | After evaluating the INTERFACE_INCLUDE_DIRECTORIES, of a target in a generator expression, also read the INTERFACE_INCLUDE_DIRECTORIES of its link interface dependencies. That means that code such as this will result in the 'user' target using /bar/include and /foo/include: add_library(foo ...) target_include_directories(foo INTERFACE /foo/include) add_library(bar ...) target_include_directories(bar INTERFACE /bar/include) target_link_libraries(bar LINK_PUBLIC foo) add_executable(user ...) target_include_directories(user PRIVATE $<TARGET_PROPERTY:bar,INTERFACE_INCLUDE_DIRECTORIES>) Also process the interface include directories from direct link dependencies for in-build targets. The situation is similar for the INTERFACE_COMPILE_DEFINITIONS. The include directories related code is currently more complex because we also need to store a backtrace at configure-time for the purpose of debugging includes. The compile definitions related code will use the same pattern in the future. This is not a change in behavior, as existing code has the same effect, but that existing code will be removed in follow-up commits.
* De-duplicate validation of genex target names.Stephen Kelly2013-02-071-3/+4
|
* Deduplicate the isGeneratorExpression method.Stephen Kelly2013-02-071-9/+1
| | | | This API seems like the most appropriate.
* Add includes and compile definitions with target_link_libraries.Stephen Kelly2013-01-311-0/+53
| | | | | | | | This establishes that linking is used to propagate usage-requirements between targets in CMake code. The use of the target_link_libraries command as the API for this is chosen because introducing a new command would introduce confusion due to multiple commands which differ only in a subtle way.
* Revert "Allow target_link_libraries with IMPORTED targets."Stephen Kelly2013-01-211-14/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 9cfe4f1b769597bd9ba179eba46572a9df27f64c. It turns out that correctly adding the content to the IMPORTED_LINK_INTERFACE_LIBARIES_<CONFIG> of an upstream target from the buildsystem of a downstream project is not simple. If upstream had added the INTERFACE content, the config-specific properties would be determined by the DEBUG_CONFIGURATIONS of upstream. As downstream, we don't have any information about what the DEBUG_CONFIGURATIONS of upstream were, so we can't determine which configuration-specific properties to populate. The best we can do is add it to all of them or add it to the ones downstream considers to be DEBUG_CONFIGURATIONS, neither of which is a good solution. So, removing the porcelain API for that is the best approach. A human can still determine which properties to populate and use the set_property API to populate the desired properies. Another solution to this would be for upstream targets to publish what they consider DEBUG_CONFIGURATIONS, but that can be added in a future release.
* Allow target_link_libraries with IMPORTED targets.Stephen Kelly2013-01-081-0/+14
| | | | | | | | | This makes it possible to use: target_link_libraries(foo LINK_INTERFACE_LIBRARIES bar) where foo is an IMPORTED target. Other tll() signatures are not allowed.
* Fix minor typos.Stephen Kelly2012-09-291-2/+2
| | | | | | | | nothe -> note than -> that duplicat -> duplicate directory -> directly Wipe wipe -> Wipe
* Add OBJECT_LIBRARY target typeBrad King2012-03-131-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | This library type can compile sources to object files but does not link or archive them. It will be useful to reference from executable and normal library targets for direct inclusion of object files in them. Diagnose and reject the following as errors: * An OBJECT library may not be referenced in target_link_libraries. * An OBJECT library may contain only compiling sources and supporting headers and custom commands. Other source types that are not normally ignored are not allowed. * An OBJECT library may not have PRE_BUILD, PRE_LINK, or POST_BUILD commands. * An OBJECT library may not be installed, exported, or imported. Some of these cases may be supported in the future but are not for now. Teach the VS generator that OBJECT_LIBRARY targets are "linkable" just like STATIC_LIBRARY targets for the LinkLibraryDependencies behavior.
* target_link_libraries: Simplify argument processing state testsBrad King2011-11-221-4/+4
| | | | | | Remove extra parens in test for not handling LINK_INTERFACE_LIBRARIES. Remove redundant test for equality with ProcessingPrivateInterface subsumed by test for inequality with ProcessingPublicInterface.
* target_link_libraries: Add LINK_(PUBLIC|PRIVATE) optionsStephen Kelly2011-11-221-10/+42
| | | | | Makes it possible to specify the link dependencies and link interfaces in one command without repetition.
* New CMP0016 for deciding whether an unknown target in TLL() is an error.Alex Neundorf2010-08-281-7/+38
| | | | | | | | When set to OLD, target_link_libraries() silently accepts if it is called with only one argument and this one argument is not a target. When set to NEW, this is an error. By default it is a warning now. Alex
* Just warn in case of a bad target as only argument for t_l_l()Alex Neundorf2010-08-261-2/+12
| | | | | | | | | As discussed on cmake-devel, if target_link_libraries() is called with only one argument, and this one argument is not a valid target, just print a warning but don't fail, since otherwise probably some existing code somewhere might stop building. Alex
* Make target_link_libraries() complain if bad target name is usedAlex Neundorf2010-08-261-6/+6
| | | | | | | | | | | | | target_link_libraries() did not complain if there was only one argument, and this one (first) argument wasn't a valid target name, e.g. add_executable(hello main.cpp) target_link_libraries(-static-intel) Here the target "hello" was forgotten in the tll() call, but cmake didn't complain. With this commit it does. Alex
* Remove trailing whitespaceAlex Neundorf2010-08-261-3/+3
| | | | Alex
* Convert CMake to OSI-approved BSD LicenseBrad King2009-09-281-14/+9
| | | | | | | This converts the CMake license to a pure 3-clause OSI-approved BSD License. We drop the previous license clause requiring modified versions to be plainly marked. We also update the CMake copyright to cover the full development time range.
* ENH: Allow a custom list of debug configurationsBrad King2008-09-041-15/+26
| | | | | | Create a DEBUG_CONFIGURATIONS global property as a way for projects to specify which configuration names are considered to be 'debug' configurations.
* ENH: Make link interface mode more distinctBrad King2008-08-181-9/+16
| | | | | | | | | Rename the recently added INTERFACE mode of the target_link_libraries() command to LINK_INTERFACE_LIBRARIES. This makes it much more distinct from a normal call to the command, and clearly states its connection to the property of the same name. Also require the option to appear immediately after the target name to make it a mode rather than an option.
* ENH: Simple specification of link interfacesBrad King2008-08-111-4/+73
| | | | | | | | Create an INTERFACE option to the target_link_libraries command to help set the LINK_INTERFACE_LIBRARIES and LINK_INTERFACE_LIBRARIES_DEBUG properties. This will help users specify link interfaces using variables from Find*.cmake modules that include the 'debug' and 'optimized' keywords.
* ENH: Tolerate repeated link library typesBrad King2008-08-071-26/+60
| | | | | | | | The "debug", "optimized", and "general" link library type specifier arguments to the target_link_library commands are sometimes repeated in user code due to variable expansion and other complications. Instead of silently accepting the duplicates and trying to link to a bogus library like "optimized.lib", warn and ignore the earlier specifiers.
* ENH: add return and break support to cmake, also change basic command ↵Ken Martin2008-01-231-2/+2
| | | | invocation signature to be able to return extra informaiton via the cmExecutionStatus class
* ENH: updated handling of debug and optimized target link librariesKen Martin2006-11-291-2/+35
|
* STYLE: fix line lengthKen Martin2006-05-121-1/+2
|
* STYLE: some m_ to this-> cleanupKen Martin2006-03-151-5/+3
|
* STYLE: fix line lengthsBill Hoffman2006-03-101-2/+4
|
* BUG: Sweeping changes to cleanup computation of target names. This shouldBrad King2006-01-131-45/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | fix many bugs related to target names being computed inconsistently. - Centralized computation of a target's file name to a method in cmTarget. Now that global knowledge is always available the *_CMAKE_PATH cache variables are no longer needed. - Centralized computation of link library command lines and link directory search order. - Moved computation of link directories needed to link CMake targets to be after evaluation of linking dependencies. This also removed alot of duplicate code in which each version had its own bugs. This commit is surrounded by the tags CMake-TargetNameCentralization1-pre and CMake-TargetNameCentralization1-post so make the large set of changes easy to identify.
* BUG: Fixed crash when optimized/debug argument is not followed by a value.Brad King2004-07-291-0/+10
|
* BUG: Fix Bug #445 - Same library in multiple projects can cause problemsAndy Cedilnik2003-12-181-2/+2
|
* ENH: Add CMAKE_IGNORE_DEPENDENCIES_ORDERING to prevent warnings about ↵Andy Cedilnik2003-10-021-11/+14
| | | | dependency problems
* ENH: Report an error when ADD_LIBRARY and TARGET_LINK_LIBRARIES are in the ↵Andy Cedilnik2003-08-071-0/+28
| | | | wrong order and fix CMakeLists files to actually work
* ENH: add checking for NOTFOUNDBill Hoffman2003-01-311-6/+0
|
* Add some error checking for missing include directories and link librariesAndy Cedilnik2003-01-301-0/+6
|
* ENH: Moved ExpandListVariables out of individual commands. Argument ↵Brad King2002-12-111-5/+3
| | | | evaluation rules are now very consistent. Double quotes can always be used to create exactly one argument, regardless of contents inside.
* ENH: Added reference to Copyright.txt. Removed old reference to ITK ↵Brad King2002-10-231-3/+3
| | | | copyright. Changed program name to CMake instead of Insight in source file header. Also removed tabs.
* does not need a second argumentKen Martin2002-07-191-1/+7
|
* removed all source lists from the system and made them vectors. Also ↵Ken Martin2002-06-271-1/+2
| | | | appended _CMAKE_PATH to the end of the automatic cache entries for executables and libraries. Odds of all these changes working are slim but cmake builds and passes all its tests. VTK40 starts building
* ENH: change LINK_LIBRARY to add to targetsBill Hoffman2002-05-021-2/+2
|
* ENH: Make it unnecessary to ever specify LINK_DIRECTORIES for any libraryAmitha Perera2002-04-281-0/+4
| | | | generated in this project, even when LIBRARY_OUTPUT_PATH is set.
* BUG: add link directories for target link libraries and add a test for itBill Hoffman2002-04-191-1/+12
|
* ENH: add suport for semi-colon separated list variablesBill Hoffman2002-03-061-2/+4
|
* ENH:Updated copyrightWill Schroeder2002-01-211-29/+5
|
* ENH: change InitialPass to take a const reference to the argument string, to ↵Bill Hoffman2001-09-201-2/+2
| | | | avoid changes to the file cache
* ENH: rename Invoke to InitialPassBill Hoffman2001-06-061-1/+1
|
* BUG: added arg0 to link librariesKen Martin2001-05-081-2/+3
|
* added TARGET_LINK_LIBRARY command and support for debug and release ↵Ken Martin2001-04-301-0/+76
libraries to link against