我想通过Mingw编译器构建我的源代码,而不是放在我的系统PATH上.我在脚本的开头尝试了这个:
set(Env{PATH} "c:/MyProject/Tools/mingw/bin/" "c:/MyProject/Tools/mingw/msys/1.0/bin/")
Run Code Online (Sandbox Code Playgroud)
还有这个:
set(CMAKE_PROGRAM_PATH "c:/MyProject/Tools/mingw/bin/" "c:/MyProject/Tools/mingw/msys/1.0/bin/")
set(CMAKE_LIBRARY_PATH "c:/MyProject/Tools/mingw/bin/" "c:/MyProject/Tools/mingw/msys/1.0/bin/")
set(CMAKE_SYSTEM_PROGRAM_PATH "c:/MyProject/Tools/mingw/bin/" "c:/MyProject/Tools/mingw/msys/1.0/bin/")
set(CMAKE_SYSTEM_PREFIX_PATH "c:/MyProject/Tools/mingw/bin/" "c:/MyProject/Tools/mingw/msys/1.0/bin/")
Run Code Online (Sandbox Code Playgroud)
第一个变体根本不起作用.建议我不能在CMake脚本中覆盖环境变量的值.第二个脚本找到我的mingw编译器,但在运行gcc时捕获错误(无法找到gcc需要的libgmp-10.dll).这是因为PATH变量没有设置为我的Mingw.
我有一个来自惊人教程的简单项目结构
https://rix0r.nl/blog/2015/08/13/cmake-guide/
它看起来如下:
- src
- CMakeLists.txt
- mylib
- include/mylib/mylibclass.h
- src/mylibclass.cpp
- CMakeLists.txt
- myapp
- src/myapp.cpp
- CMakeLists.txt
Run Code Online (Sandbox Code Playgroud)
顶级 CMakeLists.txt 包含:
cmake_minimum_required( VERSION 3.6 )
project( sample_project VERSION 0.1 LANGUAGES CXX )
set( BUILD_SHARED_LIBS ON CACHE BOOL "" )
add_subdirectory( mylib )
add_subdirectory( myapp )
Run Code Online (Sandbox Code Playgroud)
mylib 文件夹中的 CMakeLists.txt 包含:
add_library( mylib src/mylibclass.cpp include/mylib/mylibclass.h )
set_target_properties( mylib PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON )
target_include_directories( mylib
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> PRIVATE src )
Run Code Online (Sandbox Code Playgroud)
而 myapp 文件夹中的一个包含:
add_executable( myapp src/myapp.cpp )
target_link_libraries( myapp mylib …
Run Code Online (Sandbox Code Playgroud)