这可能是重复的,但是我已经花了几个小时来寻找答案……没有解决方案。首先,我知道如果使用Linux,则可能不存在此问题,但我使用的是Windows。
我对C ++还是很陌生,但是已经对Java和gradle有一定的经验。我尝试使用cmake,就像我习惯使用gradle一样。我已经阅读了cmake Wiki,但是我找不到正确的页面,或者只是我听不懂。这是我的目录结构:
MyProject
-bin
-include
--header1.h
--header2.h
--header3.h
--header4.h
--header5.h
--header6.h
-src
--CMakeLists.txt
--MyProjectConfig.h.in
--impl1.cpp
--impl2.cpp
--impl3.cpp
--impl4.cpp
--impl5.cpp
--impl6.cpp
-main.cpp
-CMakeLists.txt
我在项目文件夹中的CMakeLists.txt
如下:
cmake_minimum_required (VERSION 3.14)
project (MyProject)
add_subdirectory(src)
file(GLOB_RECURSE sources src/*.cpp include/*.h)
# The version number.
set (Tutorial_VERSION_MAJOR 0)
set (Tutorial_VERSION_MINOR 1)
# configure a header file to pass some of the CMake settings
# to the source code
configure_file (
"${PROJECT_SOURCE_DIR}/MyProjectConfig.h.in"
"${PROJECT_BINARY_DIR}/MyProjectConfig.h"
)
# add the binary tree to the search path for include files
# so that we will find MyProjectConfig.h
include_directories("${PROJECT_BINARY_DIR}")
install (FILES "${PROJECT_BINARY_DIR}/MyProjectConfig.h"
DESTINATION include)
add_executable(MyProject main.cxx ${sources})
# add the install targets
install (TARGETS MyProject DESTINATION bin)
我src文件夹中的CMakeLists.txt看起来像:
cmake_minimum_required (VERSION 3.14)
include_directories(${MyProject_SOURCE_DIR}/MyProject/include)
我在bin bin目录中使用命令:cmake -G "MinGW Makefiles" -S ../src
我现在有2个问题:
build\CMakeFiles\3.14.0-rc2\CompilerIdCXX\a.exe
没有预期的行为。它应该打印“ Hello world!”和“ My Class”,而“ My Class”是从{{ 1}},但是它什么也不做。)需要澄清:
如何构建Windows .exe文件以在控制台上破坏? 编辑:
我了解到创建cmake文件后必须在bin目录中调用impl1.cpp
。但是我只是没有得到一个exe文件。使用标志-v,我得到以下输出:
cmake --build .
答案 0 :(得分:0)
a.exe
不是您的构建输出。它应该称为MyProjectExec.exe
。另外,您需要在对add_executable
的调用中指定所有源文件。 add_subdirectory
不会自动添加任何源文件(应该将其添加到哪个构建输出中?),它只是执行CMakeLists.txt。