编译的 C++ 构建不输出也不提供错误
Compiled C++ build doesn't output nor provide error
我正在使用 cmake 和 mingw32-make 构建名为 Something
.
的 C++ SDL2 项目
在我执行 cmake .
之后,它生成了几个文件夹和文件,我进入了构建文件夹。它有一个 make 文件,所以我在该目录中使用了 make
。
然后它生成了我的可执行文件,它应该是 something.exe
。确实如此,但是当我尝试 运行 可执行文件时,它没有提供任何错误或输出。当我尝试在不包含 SDL.h
和注释 sdl 代码的情况下进行编译时,它输出 Initialized
即使包含 SDl.h
.
也应该出现
这是我的项目目录
Something
|
|
|---- SDL2
| |
| |---- include
| |
| |---- lib
|
---- src
| |
| |---- something.cpp
|
|
|---- CMakeLists.txt
这是我的 cmake 文件
# cmake version to be used
cmake_minimum_required( VERSION 3.8.0 )
project(something VERSION 1.0.0)
set(SDL2_DIR "${CMAKE_SOURCE_DIR}/SDL2/")
set(SDL2_INCLUDE_DIRS "${SDL2_DIR}/include")
# Support both 32 and 64 bit builds
if (${CMAKE_SIZEOF_VOID_P} MATCHES 8)
set(SDL2_LIBRARIES "${SDL2_DIR}/lib/x64/SDL2main.lib;${SDL2_DIR}/lib/x64/SDL2.lib")
else ()
set(SDL2_LIBRARIES "${SDL2_DIR}/lib/x86/SDL2main.lib;${SDL2_DIR}/lib/x86/SDL2.lib")
endif ()
# link dependencies
include_directories(${SDL2_INCLUDE_DIRS})
link_directories(${SDL2_LIBRARIES})
# link dependencies
include_directories(${SDL2_INCLUDE_DIRS})
link_directories(${SDL2_LIBRARIES})
# Project files and linking
set(SOURCES src/something.cpp)
add_executable(${PROJECT_NAME} src/something.cpp)
target_link_libraries(${PROJECT_NAME} ${SDL2_LIBRARIES})
最后这是我的 src/something.cpp
#include <iostream>
#include <SDL.h>
int main(int agrc, char* agrs[]){
std::cout << "Initialized!!" << std::endl;
SDL_Window* window = NULL;
SDL_Renderer* renderer = NULL;
if ( SDL_Init(SDL_INIT_EVERYTHING) != 0 ){
std::cout << "Error : " << SDL_GetError() << std::endl;
return -1;
}
window = SDL_CreateWindow("Something", 50, 50, 700, 500, SDL_WINDOW_SHOWN);
renderer = SDL_CreateRenderer(window, -1, 0);
SDL_Delay(1000);
SDL_DestroyWindow(window);
SDL_DestroyRenderer(renderer);
SDL_Quit();
return 0;
}
一定不要忘记将 .dll
(动态 link 库)放在与可执行文件相同的目录中,以便可执行文件工作
我正在使用 cmake 和 mingw32-make 构建名为 Something
.
的 C++ SDL2 项目
在我执行 cmake .
之后,它生成了几个文件夹和文件,我进入了构建文件夹。它有一个 make 文件,所以我在该目录中使用了 make
。
然后它生成了我的可执行文件,它应该是 something.exe
。确实如此,但是当我尝试 运行 可执行文件时,它没有提供任何错误或输出。当我尝试在不包含 SDL.h
和注释 sdl 代码的情况下进行编译时,它输出 Initialized
即使包含 SDl.h
.
也应该出现
这是我的项目目录
Something
|
|
|---- SDL2
| |
| |---- include
| |
| |---- lib
|
---- src
| |
| |---- something.cpp
|
|
|---- CMakeLists.txt
这是我的 cmake 文件
# cmake version to be used
cmake_minimum_required( VERSION 3.8.0 )
project(something VERSION 1.0.0)
set(SDL2_DIR "${CMAKE_SOURCE_DIR}/SDL2/")
set(SDL2_INCLUDE_DIRS "${SDL2_DIR}/include")
# Support both 32 and 64 bit builds
if (${CMAKE_SIZEOF_VOID_P} MATCHES 8)
set(SDL2_LIBRARIES "${SDL2_DIR}/lib/x64/SDL2main.lib;${SDL2_DIR}/lib/x64/SDL2.lib")
else ()
set(SDL2_LIBRARIES "${SDL2_DIR}/lib/x86/SDL2main.lib;${SDL2_DIR}/lib/x86/SDL2.lib")
endif ()
# link dependencies
include_directories(${SDL2_INCLUDE_DIRS})
link_directories(${SDL2_LIBRARIES})
# link dependencies
include_directories(${SDL2_INCLUDE_DIRS})
link_directories(${SDL2_LIBRARIES})
# Project files and linking
set(SOURCES src/something.cpp)
add_executable(${PROJECT_NAME} src/something.cpp)
target_link_libraries(${PROJECT_NAME} ${SDL2_LIBRARIES})
最后这是我的 src/something.cpp
#include <iostream>
#include <SDL.h>
int main(int agrc, char* agrs[]){
std::cout << "Initialized!!" << std::endl;
SDL_Window* window = NULL;
SDL_Renderer* renderer = NULL;
if ( SDL_Init(SDL_INIT_EVERYTHING) != 0 ){
std::cout << "Error : " << SDL_GetError() << std::endl;
return -1;
}
window = SDL_CreateWindow("Something", 50, 50, 700, 500, SDL_WINDOW_SHOWN);
renderer = SDL_CreateRenderer(window, -1, 0);
SDL_Delay(1000);
SDL_DestroyWindow(window);
SDL_DestroyRenderer(renderer);
SDL_Quit();
return 0;
}
一定不要忘记将 .dll
(动态 link 库)放在与可执行文件相同的目录中,以便可执行文件工作