VS: Add /machine: flag to Librarian tool (#11240)
If a Windows resource (.rc) source file is included in a STATIC library, the VS "link" tool will process the compiled ".res" file and needs to know the target architecture. Without it, we may get a LNK4068 warning and possibly a LNK1112 error. Add /machine: to the default static library flags to give the link tool the information it needs.
This commit is contained in:
parent
dcc2a7ccd4
commit
806609c702
|
@ -230,6 +230,7 @@ elseif(MSVC_Fortran_ARCHITECTURE_ID)
|
||||||
set(_MACHINE_ARCH_FLAG "/machine:${MSVC_Fortran_ARCHITECTURE_ID}")
|
set(_MACHINE_ARCH_FLAG "/machine:${MSVC_Fortran_ARCHITECTURE_ID}")
|
||||||
endif()
|
endif()
|
||||||
set(CMAKE_EXE_LINKER_FLAGS_INIT "${CMAKE_EXE_LINKER_FLAGS_INIT} ${_MACHINE_ARCH_FLAG}")
|
set(CMAKE_EXE_LINKER_FLAGS_INIT "${CMAKE_EXE_LINKER_FLAGS_INIT} ${_MACHINE_ARCH_FLAG}")
|
||||||
|
set(CMAKE_STATIC_LINKER_FLAGS_INIT "${CMAKE_STATIC_LINKER_FLAGS_INIT} ${_MACHINE_ARCH_FLAG}")
|
||||||
unset(_MACHINE_ARCH_FLAG)
|
unset(_MACHINE_ARCH_FLAG)
|
||||||
|
|
||||||
# add /debug and /INCREMENTAL:YES to DEBUG and RELWITHDEBINFO also add pdbtype
|
# add /debug and /INCREMENTAL:YES to DEBUG and RELWITHDEBINFO also add pdbtype
|
||||||
|
|
|
@ -46,7 +46,10 @@ else()
|
||||||
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
add_library(ResourceLib STATIC lib.cpp lib.rc)
|
||||||
|
|
||||||
add_executable(VSResource main.cpp test.rc)
|
add_executable(VSResource main.cpp test.rc)
|
||||||
|
target_link_libraries(VSResource ResourceLib)
|
||||||
|
|
||||||
set_property(TARGET VSResource
|
set_property(TARGET VSResource
|
||||||
PROPERTY VS_GLOBAL_CMakeTestVsGlobalVariable "test val")
|
PROPERTY VS_GLOBAL_CMakeTestVsGlobalVariable "test val")
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
int lib() { return 0; }
|
|
@ -0,0 +1,4 @@
|
||||||
|
STRINGTABLE
|
||||||
|
BEGIN
|
||||||
|
1234 "5"
|
||||||
|
END
|
|
@ -1,6 +1,8 @@
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
|
extern int lib();
|
||||||
|
|
||||||
struct x
|
struct x
|
||||||
{
|
{
|
||||||
const char *txt;
|
const char *txt;
|
||||||
|
@ -76,5 +78,5 @@ int main(int argc, char** argv)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret + lib();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue