为什么/ Yu和/ Yc适用于Visual Studio但不适用于NMake

时间:2015-02-25 10:59:57

标签: visual-studio makefile cmake nmake

我有library.dll,他们有一个stdafx.cpp文件。我创建了一个CMakeLists来为Visual和MakeFiles制作解决方案。当我使用Generator" Visual Studio 12 2013"时,编译正常并采取以下几行:

set_target_properties(core PROPERTIES COMPILE_FLAGS "/Yustdafx.h")
set_source_files_properties(../core/src/stdafx.cpp PROPERTIES COMPILE_FLAGS "/Ycstdafx.h")

没有任何问题。

但是当我使用NMake MakeFiles生成器时,它会失败并输出此错误:

d:\path\to\core\src\filepath.cpp(4) : fatal error C1083: Ca
nnot open precompiled header file: 'stdafx.pch': No such file or directory
NMAKE : fatal error U1077: 'C:\PROGRA~2\MICROS~3.0\VC\bin\cl.exe' : return code
'0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 12.0
\VC\BIN\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 12.0
\VC\BIN\nmake.exe"' : return code '0x2'
Stop.

为什么他用Visual Studio而不是Nmake找到预编译的头文件?

编译的唯一方法是删除上面为/ Yu和/ Yc添加的2行。这是正常的吗?

编辑: 这是我的CMakeLists.txt:

project(core CXX)
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /MANIFEST:NO")

# Path of Release
SET(BIN_RELEASE_PATH "../../build/cmake_x86")
SET( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE "${BIN_RELEASE_PATH}/bin/" )
SET( CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE "${BIN_RELEASE_PATH}/bin/" )
SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${BIN_RELEASE_PATH}/bin/" )
# Path of Debug
SET(BIN_DEBUG_PATH "../../build/cmake_x86d")
SET( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG "${BIN_DEBUG_PATH}/bin/" )
SET( CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG "${BIN_DEBUG_PATH}/bin/" )
SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${BIN_DEBUG_PATH}/bin/" )
# Flags
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4 /D_UNICODE /D_USRDLL /DCORE_EXPORTS /DUNICODE")
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi /GL /Oi /Gy /O2 /GR- /Gm- /DEBUG")
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /GS /analyze- /W4 /Zc:wchar_t /ZI /Gm /Od /fp:precise /DWIN32 /D_WINDOWS /D_USRDLL /DCORE_EXPORTS /D_WINDLL /errorReport:prompt /WX- /Zc:forScope /RTC1 /GR- /Gd /Oy- /MDd /FaDebug /EHsc /nologo /FoDebug ")

# Files of library
add_library(

        core

        SHARED

    ../core/src/file.h
    ...
    ../core/src/file.cpp

)

set_target_properties(core PROPERTIES COMPILE_FLAGS "/Yustdafx.h")
set_source_files_properties(../core/src/stdafx.cpp PROPERTIES COMPILE_FLAGS "/Ycstdafx.h")

感谢您的帮助。

0 个答案:

没有答案