Merge topic 'OUTPUT_NAME-genex'
809159c9
Add generator expression support to OUTPUT_NAME target property9a1ef0dc
Help: Improve OUTPUT_NAME documentation formatting
This commit is contained in:
commit
1dd96df94d
|
@ -2,6 +2,7 @@
|
|||
--------------------
|
||||
|
||||
Old per-configuration target file base name.
|
||||
Use :prop_tgt:`OUTPUT_NAME_<CONFIG>` instead.
|
||||
|
||||
This is a configuration-specific version of OUTPUT_NAME. Use
|
||||
OUTPUT_NAME_<CONFIG> instead.
|
||||
This is a configuration-specific version of the :prop_tgt:`OUTPUT_NAME`
|
||||
target property.
|
||||
|
|
|
@ -6,3 +6,16 @@ Output name for target files.
|
|||
This sets the base name for output files created for an executable or
|
||||
library target. If not set, the logical target name is used by
|
||||
default.
|
||||
|
||||
Contents of ``OUTPUT_NAME`` and the variants listed below may use
|
||||
:manual:`generator expressions <cmake-generator-expressions(7)>`.
|
||||
|
||||
See also the variants:
|
||||
|
||||
* :prop_tgt:`OUTPUT_NAME_<CONFIG>`
|
||||
* :prop_tgt:`ARCHIVE_OUTPUT_NAME_<CONFIG>`
|
||||
* :prop_tgt:`ARCHIVE_OUTPUT_NAME`
|
||||
* :prop_tgt:`LIBRARY_OUTPUT_NAME_<CONFIG>`
|
||||
* :prop_tgt:`LIBRARY_OUTPUT_NAME`
|
||||
* :prop_tgt:`RUNTIME_OUTPUT_NAME_<CONFIG>`
|
||||
* :prop_tgt:`RUNTIME_OUTPUT_NAME`
|
||||
|
|
|
@ -3,4 +3,5 @@ OUTPUT_NAME_<CONFIG>
|
|||
|
||||
Per-configuration target file base name.
|
||||
|
||||
This is the configuration-specific version of OUTPUT_NAME.
|
||||
This is the configuration-specific version of the :prop_tgt:`OUTPUT_NAME`
|
||||
target property.
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
OUTPUT_NAME-genex
|
||||
-----------------
|
||||
|
||||
* The :prop_tgt:`OUTPUT_NAME` target property and its variants learned to
|
||||
support :manual:`generator expressions <cmake-generator-expressions(7)>`.
|
|
@ -4597,15 +4597,25 @@ std::string cmTarget::GetOutputName(const std::string& config,
|
|||
// OUTPUT_NAME
|
||||
props.push_back("OUTPUT_NAME");
|
||||
|
||||
std::string outName;
|
||||
for(std::vector<std::string>::const_iterator i = props.begin();
|
||||
i != props.end(); ++i)
|
||||
{
|
||||
if(const char* outName = this->GetProperty(*i))
|
||||
if (const char* outNameProp = this->GetProperty(*i))
|
||||
{
|
||||
return outName;
|
||||
outName = outNameProp;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return this->GetName();
|
||||
|
||||
if (outName.empty())
|
||||
{
|
||||
outName = this->GetName();
|
||||
}
|
||||
|
||||
cmGeneratorExpression ge;
|
||||
cmsys::auto_ptr<cmCompiledGeneratorExpression> cge = ge.Parse(outName);
|
||||
return cge->Evaluate(this->Makefile, config);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
|
|
@ -73,6 +73,12 @@ install(TARGETS testLibPerConfigDest EXPORT exp
|
|||
DESTINATION lib/$<$<BOOL:$<CONFIG>>:$<CONFIG>>$<$<NOT:$<BOOL:$<CONFIG>>>:NoConfig>
|
||||
)
|
||||
|
||||
# Test OUTPUT_NAME properties with generator expressions
|
||||
add_library(testLib7 STATIC testLib7.c)
|
||||
set_property(TARGET testLib7 PROPERTY OUTPUT_NAME_DEBUG testLib7D-$<CONFIG>)
|
||||
set_property(TARGET testLib7 PROPERTY OUTPUT_NAME_RELEASE testLib7R-$<CONFIG>)
|
||||
set_property(TARGET testLib7 PROPERTY OUTPUT_NAME testLib7-$<CONFIG>)
|
||||
|
||||
# Work-around: Visual Studio 6 does not support per-target object files.
|
||||
set(VS6)
|
||||
if("${CMAKE_GENERATOR}" MATCHES "Visual Studio 6")
|
||||
|
@ -446,7 +452,7 @@ install(
|
|||
TARGETS
|
||||
testExe1 testLib1 testLib2 testExe2 testLib3 testLib4 testExe3
|
||||
testExe2lib testLib4lib testLib4libdbg testLib4libopt
|
||||
testLib6
|
||||
testLib6 testLib7
|
||||
testLibCycleA testLibCycleB
|
||||
cmp0022NEW cmp0022OLD
|
||||
systemlib
|
||||
|
@ -505,7 +511,7 @@ export(TARGETS testExe1 testLib1 testLib2 testLib3
|
|||
NAMESPACE bld_
|
||||
FILE ExportBuildTree.cmake
|
||||
)
|
||||
export(TARGETS testExe2 testLib4 testLib5 testLib6 testExe3 testExe2lib
|
||||
export(TARGETS testExe2 testLib4 testLib5 testLib6 testLib7 testExe3 testExe2lib
|
||||
testLib4lib testLib4libdbg testLib4libopt
|
||||
testLibCycleA testLibCycleB
|
||||
testLibPerConfigDest
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
int testLib7(void) { return 0; }
|
|
@ -33,6 +33,7 @@ target_link_libraries(imp_testExe1
|
|||
exp_testLib4
|
||||
exp_testLib5
|
||||
exp_testLib6
|
||||
exp_testLib7
|
||||
exp_testLibCycleA
|
||||
exp_testLibPerConfigDest
|
||||
)
|
||||
|
@ -66,6 +67,7 @@ target_link_libraries(imp_testExe1b
|
|||
bld_testLib4
|
||||
bld_testLib5
|
||||
bld_testLib6
|
||||
bld_testLib7
|
||||
bld_testLibCycleA
|
||||
bld_testLibPerConfigDest
|
||||
)
|
||||
|
|
|
@ -6,6 +6,7 @@ extern int testLib4();
|
|||
extern int testLib4lib();
|
||||
extern int testLib5();
|
||||
extern int testLib6();
|
||||
extern int testLib7();
|
||||
extern int testLibCycleA1();
|
||||
extern int testLibPerConfigDest();
|
||||
|
||||
|
@ -21,7 +22,7 @@ extern testLib4libcfg(void);
|
|||
int main()
|
||||
{
|
||||
return (testLib2() + generated_by_testExe1() + testLib3() + testLib4()
|
||||
+ testLib5() + testLib6() + testLibCycleA1()
|
||||
+ testLib5() + testLib6() + testLib7() + testLibCycleA1()
|
||||
+ testLibPerConfigDest()
|
||||
+ generated_by_testExe3() + testLib4lib() + testLib4libcfg());
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue