ENH: print a warning if ADD_LIBRARY( SHARED/MODULE ) is used and the target
platform doesn't support shared libraries Alex
This commit is contained in:
parent
7f1fbe4e4c
commit
1383368628
|
@ -19,6 +19,9 @@ SET(CMAKE_DL_LIBS "dl")
|
|||
SET(CMAKE_FIND_LIBRARY_PREFIXES "lib")
|
||||
SET(CMAKE_FIND_LIBRARY_SUFFIXES ".so" ".a")
|
||||
|
||||
# basically all general purpose OSs support shared libs
|
||||
SET(CMAKE_TARGET_SUPPORTS_ONLY_STATIC_LIBS FALSE)
|
||||
|
||||
SET (CMAKE_SKIP_RPATH "NO" CACHE BOOL
|
||||
"If set, runtime paths are not added when using shared libraries.")
|
||||
|
||||
|
|
|
@ -6,3 +6,7 @@
|
|||
# about the platform. So everything has to be specified
|
||||
# in the system/compiler files ${CMAKE_SYSTEM_NAME}-<compiler_basename>.cmake
|
||||
# and/or ${CMAKE_SYSTEM_NAME}-<compiler_basename>-${CMAKE_SYSTEM_PROCESSOR}.cmake
|
||||
|
||||
# (embedded) targets without operating system usually don't support shared libraries
|
||||
SET(CMAKE_TARGET_SUPPORTS_ONLY_STATIC_LIBS TRUE)
|
||||
|
||||
|
|
|
@ -77,6 +77,22 @@ bool cmAddLibraryCommand::InitialPass(std::vector<std::string> const& args)
|
|||
cmSystemTools::Message(msg.c_str() ,"Warning");
|
||||
}
|
||||
|
||||
/* ideally we should check whether for the linker language of the target
|
||||
CMAKE_${LANG}_CREATE_SHARED_LIBRARY is defined and if not default to
|
||||
STATIC. But at this point we know only the name of the target, but not
|
||||
yet its linker language. */
|
||||
if ((shared != 0) &&
|
||||
(this->Makefile->IsOn("CMAKE_TARGET_SUPPORTS_ONLY_STATIC_LIBS")))
|
||||
{
|
||||
std::string msg = "ADD_LIBRARY for library ";
|
||||
msg += args[0];
|
||||
msg += " is used with the SHARED or MODULE option, but the target "
|
||||
"platform supports only STATIC libraries. Building it STATIC instead. "
|
||||
"This may lead to problems.";
|
||||
cmSystemTools::Message(msg.c_str() ,"Warning");
|
||||
shared = 0;
|
||||
}
|
||||
|
||||
std::vector<std::string> srclists;
|
||||
while (s != args.end())
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue