summaryrefslogtreecommitdiffstats
path: root/Tests/RunCMake/CMP0060/CMP0060-Common.cmake
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2015-04-09 15:32:31 (GMT)
committerCMake Topic Stage <kwrobot@kitware.com>2015-04-09 15:32:31 (GMT)
commit1a1bdbfd87ec2dcf3205f062ab8145d5e0189146 (patch)
treeef720318d0e661ca0c257371f6e40b0859413b3e /Tests/RunCMake/CMP0060/CMP0060-Common.cmake
parent3049951b6293486053da2d304737fad42de3b3d8 (diff)
parent882f48e5ba335a1dbc1750c23e6dea5fa92a3adc (diff)
downloadCMake-1a1bdbfd87ec2dcf3205f062ab8145d5e0189146.zip
CMake-1a1bdbfd87ec2dcf3205f062ab8145d5e0189146.tar.gz
CMake-1a1bdbfd87ec2dcf3205f062ab8145d5e0189146.tar.bz2
Merge topic 'link-implicit-libs-full-path'
882f48e5 Link libraries by full path even in implicit directories 318cd370 Help: Add link target for Find Modules section of cmake-developer.7 1535dcd8 Tests: Teach RunCMake to optionally merge command output to stdout
Diffstat (limited to 'Tests/RunCMake/CMP0060/CMP0060-Common.cmake')
-rw-r--r--Tests/RunCMake/CMP0060/CMP0060-Common.cmake35
1 files changed, 35 insertions, 0 deletions
diff --git a/Tests/RunCMake/CMP0060/CMP0060-Common.cmake b/Tests/RunCMake/CMP0060/CMP0060-Common.cmake
new file mode 100644
index 0000000..e0a56e6
--- /dev/null
+++ b/Tests/RunCMake/CMP0060/CMP0060-Common.cmake
@@ -0,0 +1,35 @@
+# Always build in a predictable configuration. For multi-config
+# generators we depend on RunCMakeTest.cmake to do this for us.
+if(NOT CMAKE_CONFIGURATION_TYPES)
+ set(CMAKE_BUILD_TYPE Debug)
+endif()
+
+# Convince CMake that it can instruct the linker to search for the
+# library of the proper linkage type, but do not really pass flags.
+set(CMAKE_EXE_LINK_STATIC_C_FLAGS " ")
+set(CMAKE_EXE_LINK_DYNAMIC_C_FLAGS " ")
+
+# Make a link line asking for the linker to search for the library
+# look like a missing object file so we will get predictable content
+# in the error message. This also ensures that cases expected to use
+# the full path can be verified by confirming that they link.
+set(CMAKE_LINK_LIBRARY_FLAG LINKFLAG_)
+set(CMAKE_LINK_LIBRARY_SUFFIX _LINKSUFFIX${CMAKE_C_OUTPUT_EXTENSION})
+
+# Convince CMake that our library is in an implicit linker search directory.
+list(APPEND CMAKE_C_IMPLICIT_LINK_DIRECTORIES ${CMAKE_CURRENT_BINARY_DIR}/lib)
+
+# Create a simple library file. Place it in our library directory.
+add_library(CMP0060 STATIC cmp0060.c)
+set_property(TARGET CMP0060 PROPERTY
+ ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_CURRENT_BINARY_DIR}/lib)
+
+# Add a target to link the library file by full path.
+add_executable(main1 main.c)
+target_link_libraries(main1 $<TARGET_FILE:CMP0060>)
+add_dependencies(main1 CMP0060)
+
+# Add a second target to verify the warning only appears once.
+add_executable(main2 main.c)
+target_link_libraries(main2 $<TARGET_FILE:CMP0060>)
+add_dependencies(main2 CMP0060)