Den*_*tov 4 c++ build cmake build-system
我试图找到解决方案:How to check target for build ?
考虑以下 CMake 脚本:
cmake_minimum_required(VERSION 3.5.1)
project(cppTests)
# How to check at this point the target of build
if(TARGET "cppTests")
message(STATUS "Target is cppTests")
else()
message(STATUS "Target is not cppTests")
endif()
message(STATUS "Target is ${TARGET}")
set(CMAKE_CXX_STANDARD 11)
set(SOURCE_FILES main.cpp)
add_executable(cppTests ${SOURCE_FILES})
Run Code Online (Sandbox Code Playgroud)
然后我调用以下内容:
/home/username/Software/clion-2017.1.1/bin/cmake/bin/cmake --build /home/username/Projects/cppTests/cmake-build-debug --target cppTests -- -j 8
Run Code Online (Sandbox Code Playgroud)
如何在--target选项之后检查CMake脚本中的目标cppTests?我正在Makefiles中寻找类似MAKECMDGOALS 的内容。我找到了任何有用的解决方案...
在CMake 生成项目文件后,开发人员选择要构建的目标。当 CMake 运行时,CMake 无法知道开发人员将构建什么目标。因此,您所要求的对于 CMake 项目来说并没有真正意义。在 Makefile 中,没有单独的配置步骤,它是构建的一部分,这就是它如何提供像 MAKECMDGOALS 这样的功能。如果您真的想要 Makefiles 的此功能,那么也可能值得重新考虑,因为它不适用于典型用途(强调我的):
Make 会将特殊变量 MAKECMDGOALS 设置为您在命令行上指定的目标列表。如果命令行上没有给出目标,则此变量为空。请注意,该变量仅应在特殊情况下使用。
在您的示例中,您也滥用了if(TARGET...). 该构造用于测试项目是否已定义特定的 CMake 目标(在您的示例中,直到if()命令之后才定义,因此它始终评估为 false)。有关详细信息,请参阅此处的文档。
| 归档时间: |
|
| 查看次数: |
16792 次 |
| 最近记录: |