假设我具有以下C项目结构:
├── CMakeLists.txt
├── include
│ ├── header.h
├── README.md
├── src
│ └── src.c
└── test
├── CMakeLists.txt
└── test.c
根目录中的CMakeLists.txt
包含一个名为cproj
的项目
PROJECT(cproj C)
在test/CMakeLists.txt
中,我还有另一个项目
PROJECT(test C)
问题是如何评估cproj
目录中CMakeLists.txt
中的项目名称test
?
答案 0 :(得分:1)
如果我正确收集了用例,则可能应该执行以下操作:
test
很可能不是一个独立的子项目。它不应具有project
指令。如果删除它,它将现在位于cproj
项目下。
现在,您要查找在根目录中设置的项目名称,它应该可以通过CMAKE_PROJECT_NAME
变量使用。
答案 1 :(得分:0)
我找到了解决方案,我想我会自己回答。
我在根SET_PROPERTY(GLOBAL PROPERTY GLOBAL_NAME "cproj")
中添加了GLOBAL_NAME
。这样创建了一个名为CMakeLists.txt
的全局属性。
在test
目录的GET_PROPERTY(ROOT_PROJECT_NAME GLOBAL PROPERTY GLOBAL_NAME)
中,我使用ROOT_PROJECT_NAME
将属性的值存储在名为test/CMakeLists.txt
的局部变量中。然后,我可以通过该变量访问值。
编辑:根据@StoryTeller所述,我可以只删除CMAKE_PROJECT_NAME
中新项目的声明,而改用const HOOK_NEW_ORDER = 1;
const HOOK_ACTION_ORDER_STATUS_POST_UPDATE = 2;
。