我一直在收集一个 CMakeLists.txt 来编译现在是一个 SFML 示例,以准备编写我自己的源代码。感觉就像一个 hack,即使它现在可以工作(Mac Makefile、VS nmake、VS 解决方案)。
主存储库位于 https://github.com/iaefai/Spider-Fish/
欢迎提出任何建议。
cmake_minimum_required(VERSION 2.8)
PROJECT(Spider-Fish)
FIND_PACKAGE(OpenGL REQUIRED)
FIND_PACKAGE(SFML REQUIRED)
IF (WIN32)
# Windows
link_directories(${SFML_INCLUDE_DIR}/../lib)
set(RESOURCE_HANDLER ${CMAKE_CURRENT_SOURCE_DIR}/src/windows/resources.cpp)
# link_directories(${FIND_SFML_LIB_PATHS})
ELSEIF(APPLE)
# Mac
SET(RESOURCE_HANDLER ${CMAKE_CURRENT_SOURCE_DIR}/src/mac/resources.mm)
SET(MACOSX_BUNDLE_GUI_IDENTIFER "com.iaefai.Spider-Fish")
SET(MACOSX_BUNDLE_BUNDLE_NAME ${PROJECT_NAME})
if (NOT CMAKE_OSX_ARCHITECTURES)
set(CMAKE_OSX_ARCHITECTURES "i386;x86_64"
CACHE STRING "Build architectures for OSX" FORCE)
endif()
if(EXISTS /Developer/SDKs/MacOSX10.7.sdk)
set(CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX10.7.sdk"
CACHE STRING "Defaults to 10.7" FORCE)
else()
# use default SDK
endif()
find_library(COCOA_LIB Cocoa)
SET(EXTRA_LIBS ${COCOA_LIB} ${OPENGL_LIBRARIES})
ELSE()
# Linux // Assumed??
ENDIF()
#include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include})
include_directories(${SFML_INCLUDE_DIR})
SET(RESOURCES ${CMAKE_CURRENT_SOURCE_DIR}/assets/background.jpg
${CMAKE_CURRENT_SOURCE_DIR}/assets/blur.sfx
${CMAKE_CURRENT_SOURCE_DIR}/assets/colorize.sfx
${CMAKE_CURRENT_SOURCE_DIR}/assets/edge.sfx
${CMAKE_CURRENT_SOURCE_DIR}/assets/fisheye.sfx
${CMAKE_CURRENT_SOURCE_DIR}/assets/nothing.sfx
${CMAKE_CURRENT_SOURCE_DIR}/assets/pixelate.sfx
${CMAKE_CURRENT_SOURCE_DIR}/assets/sansation.ttf
${CMAKE_CURRENT_SOURCE_DIR}/assets/sprite.png
${CMAKE_CURRENT_SOURCE_DIR}/assets/wave.jpg
${CMAKE_CURRENT_SOURCE_DIR}/assets/wave.sfx)
SET (SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/Shader.cpp)
#SET (HEADERS include/resources.h)
add_executable(${PROJECT_NAME} ${SOURCES} ${RESOURCE_HANDLER})
最大的 hack 似乎是复制资源的东西。如果有一个可以在多平台上执行此操作的特殊命令,那将是理想的选择。不完全确定该怎么做——我怀疑 set_target_resources 是个好名字。
IF (APPLE)
set_target_properties(${PROJECT_NAME}
PROPERTIES
MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/src/mac/Spider-Fish-Info.plist
MACOSX_BUNDLE TRUE)
# add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND echo copying resources...
#${RESOURCES}
COMMAND mkdir -p ./${PROJECT_NAME}.app/Contents/Resources
COMMAND cp ${RESOURCES} ./${PROJECT_NAME}.app/Contents/Resources
)
# add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND echo ${PROJECT_NAME}.app/Contents/Resources)
ENDIF (APPLE)
IF (WIN32)
set_target_properties(${PROJECT_NAME}
PROPERTIES
WIN32_EXECUTABLE FALSE)
我会担心 Windows 上的这些自定义内容,因为它变得非常专业。
set(EXTRA_LIBS sfml-main ${OPENGL_LIBRARIES})
# note we can add stuff to ADDITIONAL_MAKE_CLEAN_FILES
string(COMPARE EQUAL ${CMAKE_GENERATOR} "NMake Makefiles" NMAKE)
if (NMAKE)
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND echo copying dlls...
COMMAND copy ${SFML_INCLUDE_DIR}\\..\\bin\\*.dll .
COMMAND echo copying resources... from ${CMAKE_CURRENT_SOURCE_DIR}
COMMAND -mkdir resources
COMMAND copy \"${CMAKE_CURRENT_SOURCE_DIR}\\assets\\*.*\" resources)
else ()
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND echo copying dlls...
COMMAND copy ${SFML_INCLUDE_DIR}\\..\\bin\\*.dll .
COMMAND echo copying resources... from ${CMAKE_CURRENT_SOURCE_DIR}
# Visual Studio does not support the '-' to ignore errors
COMMAND rmdir /s /q resources
COMMAND mkdir resources
COMMAND copy \"${CMAKE_CURRENT_SOURCE_DIR}\\assets\\*.*\" resources)
endif (NMAKE)
ENDIF (WIN32)
#if (APPLE)
target_link_libraries(${PROJECT_NAME}
sfml-system
sfml-window
sfml-network
sfml-graphics
sfml-audio
${EXTRA_LIBS})
#endif (APPLE)
最佳答案
您是否尝试过使用 INSTALL 命令而不是自定义的后期构建步骤。
关于c++ - CMakelists.txt 使 windows 和 mac 工作起来非常复杂,有没有更好的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7546971/
我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0
我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-
我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t
我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server
我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳
关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion在首页我有:汽车:VolvoSaabMercedesAudistatic_pages_spec.rb中的测试代码:it"shouldhavetherightselect"dovisithome_pathit{shouldhave_select('cars',:options=>['volvo','saab','mercedes','audi'])}end响应是rspec./spec/request
在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo
这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub
我想将我的MacSnowLeopardruby从1.8.7升级到1.9.1版本,有人知道轻松且最好的升级方法吗?因为我读了一些论坛/帖子/博客/讨论说覆盖苹果发布的ruby不好将Rails从版本2.2.2升级到2.3.8的最佳方法是什么?因为我找到的所有信息都仅适用于豹/老虎,而且很少有关于雪豹的复杂文章。他们还说覆盖apple提供的rails不好吗。谁能帮帮我?谢谢。 最佳答案 DanBenjamin有一些greatinstructionsforcompilingandinstallingRuby,RubyGemsandRai
我最近决定从我的系统中卸载RVM。在thispage提出的一些论点说服我:实际上,我的决定是,我根本不想担心Ruby的多个版本。我只想使用1.9.2-p290版本而不用担心其他任何事情。但是,当我在我的Mac上运行ruby--version时,它告诉我我的版本是1.8.7。我四处寻找如何简单地从我的Mac上卸载这个Ruby,但奇怪的是我没有找到任何东西。似乎唯一想卸载Ruby的人运行linux,而使用Mac的每个人都推荐RVM。如何从我的Mac上卸载Ruby1.8.7?我想升级到1.9.2-p290版本,并且我希望我的系统上只有一个版本。 最佳答案