Merge topic 'fix-CMP0052'
3b673586
CMP0052: Make the warning message more informative.5baa8159
CMP0052: Test that include dirs in install locations cause no warnings.9e0b3153
CMP0052: Do not warn when include dir is not in source or build tree
This commit is contained in:
commit
2fca2b2310
|
@ -277,6 +277,8 @@ static bool checkInterfaceDirs(const std::string &prepro,
|
||||||
" \"" << *li << "\"";
|
" \"" << *li << "\"";
|
||||||
target->GetMakefile()->IssueMessage(messageType, e.str());
|
target->GetMakefile()->IssueMessage(messageType, e.str());
|
||||||
}
|
}
|
||||||
|
bool inBinary = isSubDirectory(li->c_str(), topBinaryDir);
|
||||||
|
bool inSource = isSubDirectory(li->c_str(), topSourceDir);
|
||||||
if (isSubDirectory(li->c_str(), installDir))
|
if (isSubDirectory(li->c_str(), installDir))
|
||||||
{
|
{
|
||||||
// The include directory is inside the install tree. If the
|
// The include directory is inside the install tree. If the
|
||||||
|
@ -284,8 +286,8 @@ static bool checkInterfaceDirs(const std::string &prepro,
|
||||||
// fall through to the checks below that the include directory is not
|
// fall through to the checks below that the include directory is not
|
||||||
// also inside the source tree or build tree.
|
// also inside the source tree or build tree.
|
||||||
bool shouldContinue =
|
bool shouldContinue =
|
||||||
isSubDirectory(installDir, topBinaryDir)
|
(!inBinary || isSubDirectory(installDir, topBinaryDir)) &&
|
||||||
|| isSubDirectory(installDir, topSourceDir);
|
(!inSource || isSubDirectory(installDir, topSourceDir));
|
||||||
|
|
||||||
if (!shouldContinue)
|
if (!shouldContinue)
|
||||||
{
|
{
|
||||||
|
@ -299,7 +301,10 @@ static bool checkInterfaceDirs(const std::string &prepro,
|
||||||
s << "Directory:\n \"" << *li << "\"\nin "
|
s << "Directory:\n \"" << *li << "\"\nin "
|
||||||
"INTERFACE_INCLUDE_DIRECTORIES of target \""
|
"INTERFACE_INCLUDE_DIRECTORIES of target \""
|
||||||
<< target->GetName() << "\" is a subdirectory of the install "
|
<< target->GetName() << "\" is a subdirectory of the install "
|
||||||
"directory:\n \"" << installDir << "\"";
|
"directory:\n \"" << installDir << "\"\nhowever it is also "
|
||||||
|
"a subdirectory of the " << (inBinary ? "build" : "source")
|
||||||
|
<< " tree:\n \"" << (inBinary ? topBinaryDir : topSourceDir)
|
||||||
|
<< "\"" << std::endl;
|
||||||
target->GetMakefile()->IssueMessage(cmake::AUTHOR_WARNING,
|
target->GetMakefile()->IssueMessage(cmake::AUTHOR_WARNING,
|
||||||
s.str());
|
s.str());
|
||||||
}
|
}
|
||||||
|
@ -317,7 +322,7 @@ static bool checkInterfaceDirs(const std::string &prepro,
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (isSubDirectory(li->c_str(), topBinaryDir))
|
if (inBinary)
|
||||||
{
|
{
|
||||||
e << "Target \"" << target->GetName() << "\" "
|
e << "Target \"" << target->GetName() << "\" "
|
||||||
"INTERFACE_INCLUDE_DIRECTORIES property contains path:\n"
|
"INTERFACE_INCLUDE_DIRECTORIES property contains path:\n"
|
||||||
|
@ -326,7 +331,7 @@ static bool checkInterfaceDirs(const std::string &prepro,
|
||||||
}
|
}
|
||||||
if (!inSourceBuild)
|
if (!inSourceBuild)
|
||||||
{
|
{
|
||||||
if (isSubDirectory(li->c_str(), topSourceDir))
|
if (inSource)
|
||||||
{
|
{
|
||||||
e << "Target \"" << target->GetName() << "\" "
|
e << "Target \"" << target->GetName() << "\" "
|
||||||
"INTERFACE_INCLUDE_DIRECTORIES property contains path:\n"
|
"INTERFACE_INCLUDE_DIRECTORIES property contains path:\n"
|
||||||
|
|
|
@ -12,4 +12,9 @@ CMake Warning \(dev\) in CMakeLists.txt:
|
||||||
of the install directory:
|
of the install directory:
|
||||||
|
|
||||||
".*Tests/RunCMake/include_directories/prefix"
|
".*Tests/RunCMake/include_directories/prefix"
|
||||||
|
|
||||||
|
however it is also a subdirectory of the build tree:
|
||||||
|
|
||||||
|
".*Tests/RunCMake/include_directories/prefix/BinInInstallPrefix-CMP0052-WARN-build"
|
||||||
|
|
||||||
This warning is for project developers. Use -Wno-dev to suppress it.
|
This warning is for project developers. Use -Wno-dev to suppress it.
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
0
|
|
@ -0,0 +1 @@
|
||||||
|
^$
|
|
@ -0,0 +1,9 @@
|
||||||
|
|
||||||
|
add_library(testTarget empty.cpp)
|
||||||
|
target_include_directories(testTarget INTERFACE "${CMAKE_INSTALL_PREFIX}/dir")
|
||||||
|
|
||||||
|
install(TARGETS testTarget EXPORT testTargets
|
||||||
|
DESTINATION lib
|
||||||
|
)
|
||||||
|
|
||||||
|
install(EXPORT testTargets DESTINATION lib/cmake)
|
|
@ -13,6 +13,9 @@ run_cmake(install_config)
|
||||||
run_cmake(incomplete-genex)
|
run_cmake(incomplete-genex)
|
||||||
run_cmake(export-NOWARN)
|
run_cmake(export-NOWARN)
|
||||||
|
|
||||||
|
set(RunCMake_TEST_OPTIONS "-DCMAKE_INSTALL_PREFIX=${RunCMake_BINARY_DIR}/DirInInstallPrefix/prefix")
|
||||||
|
run_cmake(DirInInstallPrefix)
|
||||||
|
|
||||||
configure_file(
|
configure_file(
|
||||||
"${RunCMake_SOURCE_DIR}/CMakeLists.txt"
|
"${RunCMake_SOURCE_DIR}/CMakeLists.txt"
|
||||||
"${RunCMake_BINARY_DIR}/copy/CMakeLists.txt"
|
"${RunCMake_BINARY_DIR}/copy/CMakeLists.txt"
|
||||||
|
|
|
@ -12,4 +12,9 @@ CMake Warning \(dev\) in CMakeLists.txt:
|
||||||
of the install directory:
|
of the install directory:
|
||||||
|
|
||||||
".*Tests/RunCMake/include_directories/prefix"
|
".*Tests/RunCMake/include_directories/prefix"
|
||||||
|
|
||||||
|
however it is also a subdirectory of the source tree:
|
||||||
|
|
||||||
|
".*Tests/RunCMake/include_directories/prefix/src"
|
||||||
|
|
||||||
This warning is for project developers. Use -Wno-dev to suppress it.
|
This warning is for project developers. Use -Wno-dev to suppress it.
|
||||||
|
|
Loading…
Reference in New Issue