相关疑难解决方法(0)

如何在CMake脚本中设置PATH环境变量?

我想通过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.

cmake

8
推荐指数
2
解决办法
5万
查看次数

如何最好地告诉 CMake 在哪里可以找到 dll

我有一个来自惊人教程的简单项目结构

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)

c++ windows dll cmake visual-studio

3
推荐指数
1
解决办法
7621
查看次数

标签 统计

cmake ×2

c++ ×1

dll ×1

visual-studio ×1

windows ×1