This is what my current project looks like and I am trying to build dlls from this project. The problem I am having is I want to build lib1
as 64 bit dll and lib2
as 32 bit dll. lib1
gets built with 64 bit dll without any problem, but I cannot seem to build 32 bit dll of lib2
.
.
├── CMakeLists.txt
├── lib1
│ ├── CMakeLists.txt
│ └── file1.cpp
└── lib2
├── CMakeLists.txt
└── file2.cpp
2 directories, 5 files
CMakeLists.txt
cmake_minimum_required(VERSION 3.8)
project(multi_arch_lib)
add_subdirectory(lib1)
add_subdirectory(lib2)
lib1/CMakeLists.txt
set(TARGET lib1)
set(SRC file1.cpp)
add_library(${TARGET} SHARED ${SRC})
set_target_properties(${TARGET} PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/my_lib
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/my_lib
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/my_lib
)
lib2/CMakeLists.txt (I wan to build 32 bit dll out of this)
set(TARGET lib2)
set(SRC file2.cpp)
#set(CMAKE_GENERATOR_PLATFORM Win32 CACHE INTERNAL "")
add_library(${TARGET} SHARED ${SRC})
set_target_properties(${TARGET} PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/my_lib
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/my_lib
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/my_lib
COMPILE_OPTIONS "-m32" LINK_OPTIONS "-m32"
)
# unset back to 64 bit
#set(CMAKE_GENERATOR_PLATFORM x64 CACHE INTERNAL "")
I have tried CMAKE_GENERATOR_PLATFORM
and COMPILE_OPTIONS "-m32" LINK_OPTIONS "-m32"
but both seem to always create 64 bit.
$file lib2/my_lib/Release/lib2.dll
lib2/my_lib/Release/lib2.dll: PE32+ executable (DLL) (console) x86-64, for MS Windows
file1.cpp
void function1(){}
file2.cpp
void function2(){}
To generate solution file I do cmake -A x64 -S . -B Build