首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CMake on MSYS2冻结

CMake on MSYS2冻结
EN

Stack Overflow用户
提问于 2018-08-31 21:08:11
回答 1查看 752关注 0票数 0

我在Windows 8上运行MSYS2,CMake冻结/锁定有问题。

下面是一个很小的例子:

main.cpp

代码语言:javascript
复制
#include <iostream>
int main()
{   
   std::cout << "Hello World!" << std::endl;
   return 0;
}

CMakeLists.txt

代码语言:javascript
复制
cmake_minimum_required(VERSION 3.0.0)
project (helloworld)
add_executable(helloworld main.cpp)

如果打开MSYS2控制台,转到上述两个文件所在的目录,然后执行以下命令

代码语言:javascript
复制
cmake .

没有进一步的输出,控制台将锁定。创建了一个空的CMakeFiles文件夹,但没有发生其他任何事情。我尝试过使用CMake 3.10.2和3.2.3,这两个版本也是如此。

下面是一些strace输出,如果完全感兴趣的话:如果我运行命令

代码语言:javascript
复制
strace cmake .

我在不同的时间得到不同的输出。有时最后一行是类似于

代码语言:javascript
复制
19   4436   [main] cmake 2320 child_copy: done

有时候就像

代码语言:javascript
复制
44   239509 [main] cmake 9820 open_shared: name cygpid.10668 n 10668, shared 0xBB0000 (wanted 0x0), h 0x344, *m 6

有时输出的结尾类似于

代码语言:javascript
复制
   20 2735480 [main] cmake 14200 kill_pgrp: killing pid 5900, pgrp 5900, p->ctty /dev/pty0, ctty /dev/pty5
   24 2735504 [main] cmake 14200 sig_send: 1 = SetNamedPipeHandleState (0x358, PIPE_NOWAIT, NULL, NULL)
   16 2735520 [main] cmake 14200 sig_send: sendsig 0x358, pid 5900, signal 17, its_me 0
   19 2735539 [main] cmake 14200 sig_send: Not waiting for sigcomplete.  its_me 0 signal 17
   24 2735563 [main] cmake 14200 sig_send: returning 0x0 from sending signal 17
   23 2735586 [main] cmake 14200 _pinfo::kill: 0 = _pinfo::kill (17), pid 5900, process_state 0x4C5
   20 2735606 [main] cmake 14200 kill_pgrp: killing pid 15152, pgrp 15152, p->ctty /dev/pty5, ctty /dev/pty5
 3486 2739092 [main] cmake 14200 sig_send: 1 = SetNamedPipeHandleState (0x3A0, PIPE_NOWAIT, NULL, NULL)
   44 2739136 [main] cmake 14200 sig_send: sendsig 0x3A0, pid 15152, signal 17, its_me 0
   33 2739169 [main] cmake 14200 sig_send: Not waiting for sigcomplete.  its_me 0 signal 17
   27 2739196 [main] cmake 14200 sig_send: returning 0x0 from sending signal 17
   25 2739221 [main] cmake 14200 _pinfo::kill: 0 = _pinfo::kill (17), pid 15152, process_state 0x61

造成这些问题的原因是什么?

编辑:的输出

代码语言:javascript
复制
cmake . --trace

如下所示,在冻结之前:

代码语言:javascript
复制
Running with trace output on.
d/Dropbox/Programming/Cplusplus/workspace/Testprograms/test_cmake/CMakeLists.txt(1): cmakeminimum_required(VERSION 3.0.0 )
d/Dropbox/Programming/Cplusplus/workspace/Testprograms/test_cmake/CMakeLists.txt(2): project(helloworld ) 
usr/share/cmake-3.10.2/Modules/CMakeDetermineSystem.cmake(36): 
if(CMAKE_HOST_UNIX )
usr/share/cmake-3.10.2/Modules/CMakeDetermineSystem.cmake(37): find_program(CMAKE_UNAME uname /bin /usr/bin /usr/local/bin ) 
usr/share/cmake-3.10.2/Modules/CMakeDetermineSystem.cmake(38): if(CMAKE_UNAME)
usr/share/cmake-3.10.2/Modules/CMakeDetermineSystem.cmake(39): if(CMAKE_HOST_SYSTEM_NAME STREQUAL AIX )
usr/share/cmake-3.10.2/Modules/CMakeDetermineSystem.cmake(45): else() 
usr/share/cmake-3.10.2/Modules/CMakeDetermineSystem.cmake(46): 
exec_program(${CMAKE_UNAME1 ARGS -r OUTPUT_VARIABLE CMAKE_HOST_SYSTEM_VERSION )
EN

回答 1

Stack Overflow用户

发布于 2018-09-01 18:31:12

CMake不喜欢树构建。创建一个单独的生成文件夹。

代码语言:javascript
复制
mkdir build
cd build
cmake ..

CMake不构建您的程序,它只创建生成文件。你的下一步就是。

代码语言:javascript
复制
mingw32-make

除非您有其他问题,否则您应该能够运行您的程序。

麦克

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52122603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档