Skip to content

Commit bc4d9c5

Browse files
jeongseok-metafacebook-github-bot
authored andcommitted
Enable build as shared libraries for Windows (#550)
Summary: Enables cross-platform shared library builds by adding `BUILD_SHARED_LIBS=ON` to C++ development tasks across all supported platforms (Linux, macOS, Windows), while using `BUILD_SHARED_LIBS=OFF` for Python bindings to ensure portability, creating a hybrid approach that optimizes both development experience and deployment across all platforms. ## Checklist: - [x] Adheres to the [style guidelines](https://facebookresearch.github.io/momentum/docs/developer_guide/style_guide) - [ ] Codebase formatted by running `pixi run lint` Pull Request resolved: #550 Test Plan: CI Reviewed By: nickyhe-gemini Differential Revision: D81827366 Pulled By: jeongseok-meta fbshipit-source-id: 6bf00f408bee7837db5e0c66e2e63e706dc3f7da
1 parent 2e5716d commit bc4d9c5

File tree

8 files changed

+94
-23
lines changed

8 files changed

+94
-23
lines changed

axel/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,10 @@ target_link_libraries(${target_name}
7575
drjit
7676
)
7777

78+
if(MSVC)
79+
set_target_properties(${target_name} PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON)
80+
endif()
81+
7882
if(MOMENTUM_ENABLE_PROFILING)
7983
target_link_libraries(${target_name} PUBLIC Tracy::TracyClient)
8084
target_compile_definitions(${target_name} PUBLIC -DAXEL_WITH_TRACY_PROFILER=1)

cmake/mt_defs.cmake

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,12 @@ function(mt_library)
283283
${private_or_interface} ${_ARG_PRIVATE_COMPILE_OPTIONS}
284284
)
285285

286+
if(MSVC)
287+
if(NOT library_type STREQUAL "INTERFACE")
288+
set_target_properties(${_ARG_NAME} PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON)
289+
endif()
290+
endif()
291+
286292
if(NOT ${_ARG_NO_INSTALL})
287293
set_property(GLOBAL APPEND PROPERTY MOMENTUM_TARGETS ${_ARG_NAME})
288294
endif()

momentum/marker_tracking/marker_tracker.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1110,7 +1110,7 @@ std::pair<float, float> getLocatorError(
11101110
error += frameError / validMarkers;
11111111
}
11121112
}
1113-
return {error / numFrames, maxError};
1113+
return {static_cast<float>(error / numFrames), static_cast<float>(maxError)};
11141114
}
11151115

11161116
} // namespace momentum

momentum/marker_tracking/tracker_utils.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -114,17 +114,17 @@ averageTriangleSkinWeights(
114114
}
115115

116116
std::vector<std::pair<float, uint32_t>> sortedWeights;
117-
for (int i = 0; i < skinWeights.size(); ++i) {
117+
for (Eigen::Index i = 0; i < skinWeights.size(); ++i) {
118118
if (skinWeights[i] > 0.0f) {
119-
sortedWeights.emplace_back(skinWeights[i], i);
119+
sortedWeights.emplace_back(skinWeights[i], static_cast<uint32_t>(i));
120120
}
121121
}
122122
std::sort(sortedWeights.begin(), sortedWeights.end(), std::greater<>());
123123

124124
Eigen::Vector<float, kMaxSkinJoints> resultWeights = Eigen::Vector<float, kMaxSkinJoints>::Zero();
125125
Eigen::Vector<uint32_t, kMaxSkinJoints> resultIndices =
126126
Eigen::Vector<uint32_t, kMaxSkinJoints>::Zero();
127-
for (int i = 0; i < kMaxSkinJoints; ++i) {
127+
for (size_t i = 0; i < kMaxSkinJoints; ++i) {
128128
if (i < sortedWeights.size()) {
129129
resultWeights[i] = sortedWeights[i].first;
130130
resultIndices[i] = sortedWeights[i].second;

momentum/math/intersection.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ std::vector<std::pair<int32_t, int32_t>> intersectMeshBruteForce(const MeshT<T>&
107107
for (size_t iFace0 = 0; iFace0 < mesh.faces.size(); iFace0++) {
108108
for (size_t iFace1 = iFace0 + 1; iFace1 < mesh.faces.size(); iFace1++) {
109109
if (intersectFace(mesh, faceNormals, iFace0, iFace1)) {
110-
intersectingFaces.emplace_back(iFace0, iFace1);
110+
intersectingFaces.emplace_back(static_cast<int32_t>(iFace0), static_cast<int32_t>(iFace1));
111111
}
112112
}
113113
}
@@ -143,7 +143,7 @@ std::vector<std::pair<int32_t, int32_t>> intersectMesh(const MeshT<T>& mesh) {
143143
// calculate all face intersections
144144
bvh.traverseOverlappingPairs([&](size_t iFace0, size_t iFace1) {
145145
if (intersectFace(mesh, faceNormals, iFace0, iFace1)) {
146-
intersectingFaces.emplace_back(iFace0, iFace1);
146+
intersectingFaces.emplace_back(static_cast<int32_t>(iFace0), static_cast<int32_t>(iFace1));
147147
}
148148
return true;
149149
});

0 commit comments

Comments
 (0)