Kev*_*vin 5 c++ cmake visual-studio
我正在使用 cmake 生成一个 Visual Studio 项目。
假设我需要使用以下 Microsoft 特定的库和标头:
c:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Auxiliary\VS\UnitTest\lib\x64\Microsoft.VisualStudio.TestTools.CppUnitTestFramework.lib)c:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\ucrt\crtdbg.h)我不想将这些路径硬编码到我的 CMakeLists.txt 中,也不想强制开发人员在构建过程中传入路径。
我希望能够做这样的事情:
# 1. get include paths somehow
# 2. get lib paths somehow
include_directories(
${MSVS_UnitTest_INCLUDE_DIR}
${Windows_SDK_INCLUDE_DIR}/ucrt
)
link_directories(
${MSVS_UnitTest_LIBRARIES_DIR}/x64
${Windows_SDK_LIBRARIES_DIR}/ucrt/x64
)
add_library(MyTest mytest.cpp)
target_link_libraries(MyTest
libucrt
Microsoft.VisualStudio.TestTools.CppUnitTestFramework
)
Run Code Online (Sandbox Code Playgroud)
做#1 和#2 的正确方法是什么?
至少对于#1(包括sdk的路径)我找到了一个解决方案。如果您使用Visual Studio 生成器,则 cmake 变量CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION将填充包含文件夹的路径。另一种方法是使用环境变量 $ENV{WindowsSdkDir} 和 $ENV{WindowsSDKVersion},源 cmake 也很可能从中获取此信息。
| 归档时间: |
|
| 查看次数: |
236 次 |
| 最近记录: |