2016-08-14 2 views
6

CMAKE_PROJECT_NAME और PROJECT_NAME के ​​बीच क्या अंतर है?CMAKE_PROJECT_NAME और PROJECT_NAME के ​​बीच अंतर?

प्रलेखन से:

CMAKE_PROJECT_NAME

चालू परियोजना का नाम है।

यह निकटतम विरासत परियोजना() कमांड से वर्तमान प्रोजेक्ट का नाम निर्दिष्ट करता है।

परियोजना आदेश को दिया परियोजना के PROJECT_NAME

नाम।

यह नाम सबसे हालिया प्रोजेक्ट() कमांड को दिया गया नाम है।

मुझे अंतर समझ में नहीं आता है।

मुझे CMAKE_PROJECT_NAME का उपयोग कब करना चाहिए? मुझे PROJECT_NAME का उपयोग कब करना चाहिए?

उत्तर

6

प्रलेखन से, मुझे दो चर के बीच अंतर नहीं मिलता है।

अंतर यह है कि CMAKE_PROJECT_NAME, जड़ CMakeLists.txt से पिछले project कॉल से नाम है, जबकि PROJECT_NAME, परवाह किए बिना आदेश युक्त फ़ाइल का स्थान से पिछले project कॉल से है।

अंतर निम्न परीक्षण से पहचानने योग्य है।

फ़ाइल संरचना:

|-CMakeLists.txt 
\-test2 
    |-CMakeLists.txt 
    \-test3 
    \-CMakeLists.txt 

CMakeLists.txt:

cmake_minimum_required(VERSION 3.0) 
project(A) 
message("< ${CMAKE_PROJECT_NAME}/${PROJECT_NAME}") 
project(B) 
message("< ${CMAKE_PROJECT_NAME}/${PROJECT_NAME}") 
add_subdirectory(test2) 
message("< ${CMAKE_PROJECT_NAME}/${PROJECT_NAME}") 
project(C) 
message("< ${CMAKE_PROJECT_NAME}/${PROJECT_NAME}") 

test2/CMakeLists.txt:

project(D) 
message("<< ${CMAKE_PROJECT_NAME}/${PROJECT_NAME}") 
add_subdirectory(test3) 
project(E) 
message("<< ${CMAKE_PROJECT_NAME}/${PROJECT_NAME}") 

test2/test3/CMakeLists.txt:

project(F) 
message("<<< ${CMAKE_PROJECT_NAME}/${PROJECT_NAME}") 
,210

प्रासंगिक उत्पादन होता है:

< A/A 
< B/B 
<< B/D 
<<< B/F 
<< B/E 
< B/B 
< C/C 

उप-निर्देशिका में, हमेशा बी CMAKE_PROJECT_NAME के लिए मूल्य है।

संबंधित मुद्दे