Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我怎样才能复制“复制”;“建立并运行”;使用CMake的现代IDE的功能?_C_Cmake_Build - Fatal编程技术网

我怎样才能复制“复制”;“建立并运行”;使用CMake的现代IDE的功能?

我怎样才能复制“复制”;“建立并运行”;使用CMake的现代IDE的功能?,c,cmake,build,C,Cmake,Build,我有一个在Linux中创建的C项目。建筑物由CMake管理。该项目被划分为源代码的常用文件夹,包括一个build文件夹,CMake在其中生成一个可执行文件供我运行 运行二进制文件需要首先设置一个环境变量,并将一些开关传递到程序的命令行。每次键入“make”后都要键入命令行,这是一件很乏味的事情。在我注销之前,依靠shell调用上一个命令是可以的。我知道现代IDE提供了这种功能,但我不希望我的构建系统依赖于特定的IDE 我想通过简单地键入“makerun”之类的内容来缩短编辑-编译-运行周期,它应

我有一个在Linux中创建的C项目。建筑物由CMake管理。该项目被划分为源代码的常用文件夹,包括一个build文件夹,CMake在其中生成一个可执行文件供我运行

运行二进制文件需要首先设置一个环境变量,并将一些开关传递到程序的命令行。每次键入“make”后都要键入命令行,这是一件很乏味的事情。在我注销之前,依靠shell调用上一个命令是可以的。我知道现代IDE提供了这种功能,但我不希望我的构建系统依赖于特定的IDE

我想通过简单地键入“makerun”之类的内容来缩短编辑-编译-运行周期,它应该适当地编译任何过时的源代码,然后运行生成的二进制文件。最好不必将二进制名称硬编码成任何内容(我想在使用add_executable()之后,CMake知道它是什么,我希望将来为其他项目复制此目录树)

我确信网上有一些东西可以解释这一点,但我想不出正确的单词可以放进谷歌找到它。

有:

add_executable(my_exe ....)
要添加自定义目标,可以执行以下操作:

add_custom_target(run COMMAND env VARIABLE=20 $<TARGET_FILE:my_exe> ARG1 ARG2)
添加自定义目标(运行命令环境变量=20$ARG1 ARG2) 如果您正在测试与运行命令概念不同的命令,请添加测试:

add_test(NAME test1 COMMAND $<TARGET_FILE:my_exe> arg1 arg)
set_property(TEST test1 PROPERTY ENVIRONMENT
      VARIABLE=something
      ANOTHER_VARIABLE=something_else
)
add_test(NAME test2 COMMAND $<TARGET_FILE:my_exe> arg1 arg2)
set_property(TEST test2 PROPERTY ENVIRONMENT
      VARIABLE=something_else
      ANOTHER_VARIABLE=yet_something_else
)
etc..
添加测试(名称test1命令$arg1 arg) 设置_属性(测试1属性环境 变量=某物 另一个变量=另一个变量 ) 添加测试(名称test2命令$arg1 arg2) 设置_属性(测试2属性环境 变量=其他东西 另一个变量=还有别的东西 ) 等 研究和开发

在使用cmake时,更愿意使用
cmake--build--target run
而不是
make run
,以不依赖于生成器,这样当您决定切换到Ninja以加快编译速度时,您就不必重构构建过程了。

add_executable(my_exe ....)
要添加自定义目标,可以执行以下操作:

add_custom_target(run COMMAND env VARIABLE=20 $<TARGET_FILE:my_exe> ARG1 ARG2)
添加自定义目标(运行命令环境变量=20$ARG1 ARG2) 如果您正在测试与运行命令概念不同的命令,请添加测试:

add_test(NAME test1 COMMAND $<TARGET_FILE:my_exe> arg1 arg)
set_property(TEST test1 PROPERTY ENVIRONMENT
      VARIABLE=something
      ANOTHER_VARIABLE=something_else
)
add_test(NAME test2 COMMAND $<TARGET_FILE:my_exe> arg1 arg2)
set_property(TEST test2 PROPERTY ENVIRONMENT
      VARIABLE=something_else
      ANOTHER_VARIABLE=yet_something_else
)
etc..
添加测试(名称test1命令$arg1 arg) 设置_属性(测试1属性环境 变量=某物 另一个变量=另一个变量 ) 添加测试(名称test2命令$arg1 arg2) 设置_属性(测试2属性环境 变量=其他东西 另一个变量=还有别的东西 ) 等 研究和开发


在使用cmake时,更喜欢使用
cmake--build--target run
而不是
make run
,这是一种与生成器无关的方法,这样当您决定切换到Ninja以加快编译速度时,就不必重构构建过程了。

您想运行可执行文件还是测试可执行文件<代码>运行二进制文件需要首先设置一个环境变量,并将一些开关传递到程序的命令行然后为什么不将其硬编码到二进制文件中?您想运行可执行文件还是测试可执行文件<代码>运行二进制文件需要首先设置一个环境变量,并将一些开关传递到程序的命令行,那么为什么不将其硬编码到二进制文件中呢?仅供参考:如果您使用的是
添加测试
,您可以通过设置来设置环境变量。如果您在windows上使用visual studio,您可以使用Och,wow,not new为可执行目标指定visual studio调试器的环境,这是一个属性!仅供参考:如果您使用的是
add_test
,则可以通过设置来设置环境变量。如果您在windows上使用visual studio,您可以使用Och,wow,not new为可执行目标指定visual studio调试器的环境,这是一个属性!