это может быть дубликатом, но я уже потратил пару часов на поиск ответа ... без решения.Прежде всего я знаю, что эта проблема может не существовать, если бы я использовал Linux, но я на Windows.
Я довольно новичок в c ++, но уже получил некоторый опыт работы с Java и Gradle.Я пытаюсь использовать cmake так же, как я привык использовать gradle.Я уже читал вики cmake, но я не нахожу правильных страниц или просто не понимаю.Вот моя структура каталогов:
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)
Мой CMakeLists.txt в папке src выглядит так:
cmake_minimum_required (VERSION 3.14)
include_directories(${MyProject_SOURCE_DIR}/MyProject/include)
Я использую команду в каталоге bin bin: cmake -G "MinGW Makefiles" -S ../src
Сейчас у меня есть 2 вопроса:
- (Как мне сказать cmake всегда использовать MinGW?(Я не хочу использовать -G всегда)) решено
- (скомпилированный файл
build\CMakeFiles\3.14.0-rc2\CompilerIdCXX\a.exe
не имеет ожидаемого поведения. Он должен вывести «Hello world!» И «My Class», while »Мой класс "выводится из атрибута класса, созданного из impl1.cpp
, однако он ничего не делает.) Нуждается в уточнении: Как мне создать .exe-файл windows для разрушения на консоли?
Редактировать:
Я узнал, что после создания файлов cmake мне нужно вызвать cmake --build .
в моей папке bin.Однако я просто не получаю exe-файл.С флагом -v я получаю этот вывод:
"C:\Program Files\CMake\bin\cmake.exe" -SD:\git\MyProject\src -BD:\git\MyProject\bin --check-build-system CMakeFiles\Makefile.cmake 0
"C:\Program Files\CMake\bin\cmake.exe" -E cmake_progress_start D:\git\MyProject\bin\CMakeFiles D:\git\MyProject\bin\CMakeFiles\progress.marks
C:/MinGW/bin/mingw32-make.exe -f CMakeFiles\Makefile2 all
mingw32-make.exe[1]: Entering directory 'D:/git/MyProject/bin'
mingw32-make.exe[1]: Nothing to be done for 'all'.
mingw32-make.exe[1]: Leaving directory 'D:/git/MyProject/bin'
"C:\Program Files\CMake\bin\cmake.exe" -E cmake_progress_start D:\git\MyProject\bin\CMakeFiles 0 ```